为什么只有元素的一半 类 可以切换?
Why are only half the element's classes able to be toggled?
我正在利用 jQuery 的 .toggleClass() 函数在几个 <div>
元素内创建一个收藏夹按钮,每个元素都有一个 <a>
元素和一个 <i>
元素。我正在使用来自 Font Awesome 的 2 个图标,类 我在它们之间来回切换。
正如 JSFiddle.
所展示的那样,它工作得非常好
我遇到的问题是,当我使用 PHP foreach 循环动态生成这些元素时,仅生成元素的 类 切换的一半。
HTML :
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
jQuery :
$(".h-icon").on("click", function(e) {
e.preventDefault();
$("i", this).toggleClass("fa-heart fa-heart-o");
$.ajax({
url: $(this).prop("href")
})
return false;
});
PHP :
<?php
foreach($array as $row) {
$favorite = $row['favorite'];
if($favorite == false) {
echo '<div><a class="h-icon" href="#"><i class="fa fa-heart-o" aria-hidden="true"></i></a></div>';
}
else {
echo '<div><a class="h-icon" href="#"><i class="fa fa-heart" aria-hidden="true"></i></a></div>';
}
}
?>
当您动态添加更多元素时,您需要重新注册 click
侦听器,或者使用动态事件侦听器。
$(document).on("click", ".h-icon", function(e) {
// ...
});
我正在利用 jQuery 的 .toggleClass() 函数在几个 <div>
元素内创建一个收藏夹按钮,每个元素都有一个 <a>
元素和一个 <i>
元素。我正在使用来自 Font Awesome 的 2 个图标,类 我在它们之间来回切换。
正如 JSFiddle.
所展示的那样,它工作得非常好我遇到的问题是,当我使用 PHP foreach 循环动态生成这些元素时,仅生成元素的 类 切换的一半。
HTML :
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
<div>
<a class="h-icon" href="#">
<i class="fa fa-heart-o" aria-hidden="true"></i>
</a>
</div>
jQuery :
$(".h-icon").on("click", function(e) {
e.preventDefault();
$("i", this).toggleClass("fa-heart fa-heart-o");
$.ajax({
url: $(this).prop("href")
})
return false;
});
PHP :
<?php
foreach($array as $row) {
$favorite = $row['favorite'];
if($favorite == false) {
echo '<div><a class="h-icon" href="#"><i class="fa fa-heart-o" aria-hidden="true"></i></a></div>';
}
else {
echo '<div><a class="h-icon" href="#"><i class="fa fa-heart" aria-hidden="true"></i></a></div>';
}
}
?>
当您动态添加更多元素时,您需要重新注册 click
侦听器,或者使用动态事件侦听器。
$(document).on("click", ".h-icon", function(e) {
// ...
});