如何使用jQuery.end()?

时间:2011-11-13 15:59:38

标签: javascript jquery jquery-selectors

从我在docs中读到的内容,end()将返回初始对象。在我的情况下,这应该返回$(this),对吗?

$('.el').delegate('a.off', 'click', function(){
  $(this).parents('div').find('a').removeClass('active').end().addClass('active');
  ...
});

但它似乎不起作用。我没有在原始元素(链接addClass('active'))上应用a.off

2 个答案:

答案 0 :(得分:4)

不是初始对象,以前选中的元素,在这种情况下为.parents('div')。将其视为堆栈,每次更改元素选择时,它们都会添加到堆栈中,.end()会删除堆栈的最后一个条目。您必须两次致电.end()

但您可以重新排列方法调用并使用not过滤掉特定元素:

$(this)
  .addClass('active')
  .parents('div')
  .find('a').not(this)
  .removeClass('active');

答案 1 :(得分:1)

您的理解是正确的,但我不确定您的代码发生了什么,我做了这个例子并且它有效:

http://jsfiddle.net/UKwzw/

没关系。我错过了“removeClass”部分。