我想更改列表中除了单击的元素之外的所有元素。我想我需要确定实际点击的内容然后更改它的兄弟姐妹?如何找到点击的元素?
<ul>
<li><h4 class="span1"><a href="#" class="sort" data-sort="ID">ID<i class="icon-arrow-down" aria-hidden="true"></i></a></h4></li>
<li><h4 class="span2"><a href="#" class="sort" data-sort="Type">Type<i class="icon-arrow-down" aria-hidden="true"></i></a></h4></li>
<li><h4 class="span3"><a href="#" class="sort" data-sort="Task">Task<i class="icon-arrow-down" aria-hidden="true"></i></a></h4></li>
<li><h4 class="span8"><a href="#" class="sort" data-sort="Project">Project<i class="icon-arrow-down" aria-hidden="true"></i></a></h4></li>
<li><h4 class="span3a"><a href="#" class="sort" data-sort="DueDate">Urgency<i class="icon-arrow-down" aria-hidden="true"></i></a></h4></li>
<li><h4 class="span3 last"><a href="#" class="sort" data-sort="Created">Date Created<i class="icon-arrow-down" aria-hidden="true"></i></a></h4></li>
</ul>
$('.sort').click(function () {
$(this).data('clicked', true);
if($(this).data('clicked')) {
$('i', this).toggleClass('icon-arrow-down').toggleClass('icon-arrow-up');
}
else {
$('.sort i').siblings().removeClass('icon-arrow-up').addClass('icon-arrow-down');
}
});
答案:
$('.sort').click(function() {
$(this).closest('li').siblings().find('i').removeClass('icon-arrow-up').addClass('icon-arrow-down');
$(this).find('i').toggleClass('icon-arrow-down icon-arrow-up');
});
答案 0 :(得分:0)
你想做这样的事情:
$('.sort').click(function (e) {
$('.sort').not(e.currentTarget).css({
color: 'red'
});
return false
});
这是一个小提琴:http://jsfiddle.net/th3KV/
您的代码:
$('.sort').click(function (e) {
$(this).find('i').toggleClass('icon-arrow-down icon-arrow-up');
$('.sort').not(e.currentTarget).each(function(){
$(this).find('i').removeClass('icon-arrow-up').addClass('icon-arrow-down');
});
return false
});
答案 1 :(得分:0)
试试这个:
$('.sort').click(function() {
$(".sort i").removeClass('icon-arrow-up').addClass('icon-arrow-down');
$("i", this).toggleClass('icon-arrow-down icon-arrow-up')
});
答案 2 :(得分:0)
假设每个标签都是data-sort属性所独有的,如上例所示:
$('.sort').click(function () {
$("ul li").each($.proxy(function(index, item) {
if ($("a", item).data("sort") !== $(this).data("sort") {
//different element than the one clicked
}
}, this));
答案 3 :(得分:0)
由于$(this)
代表点击的锚元素,siblings()
无法访问其他li
元素。相反,寻找上面两个级别的元素的兄弟姐妹,如下所示:
$(this).parent().parent().siblings().removeClass("foo");
或者更改标记,以便定位li
而不是其中包含的锚。
答案 4 :(得分:0)
我认为这相对容易阅读和理解:
$('a.sort').click(function () {
$("i", this)
.toggleClass('icon-arrow-down')
.toggleClass('icon-arrow-up')
.closest("li")
.siblings()
.find("i")
.removeClass('icon-arrow-up')
.addClass('icon-arrow-down');
});