在Jquery中定位相邻元素

时间:2013-11-30 00:04:55

标签: jquery

我使用下面的代码将加号更改为减号,反之亦然。如果页面上只有一个元素,这样可以正常工作。

我有一个包含多个.handler类的页面,我希望定位每个处理程序旁边的#plus id。有什么想法吗?

jQuery(".handler").click(function(){
   jQuery("#plus").html(function(_, html) {
        return jQuery.trim(html) == '+' ? '-' : '+';
    });
});

HTML

<div class="term_container">
<div class="handler"><span id="plus"> + </span><?php echo $term->name; ?></div>
<div>
<ul class="list">
<?php

$rp = new WP_Query( $args );
if ($rp->have_posts())
while ( $rp->have_posts() ) { 
$rp->the_post(); 

$name       = get_field('fl_profile_name');
$location   = get_post_meta(get_the_id(), 'fl_country', true);

?>
<li data-location="<?php echo $location; ?>"><a href="<?php the_permalink();?>"><?php echo $name; ?></a></li>

<?php 
}
?>
</ul>
</div>
</div>

1 个答案:

答案 0 :(得分:2)

首先将ID更改为类,因为您有多个具有相同属性的元素

<div class="handler"><span class="plus"> + </span><?php echo $term->name; ?></div>

然后使用后代选择器查找单击的处理程序中的plus元素

jQuery(".handler").click(function () {
    var $plus = jQuery(this).find(".plus").html(function (_, html) {
        return jQuery.trim(html) == '+' ? '-' : '+';
    });
    $('.plus').not($plus).html('+')
});