从jQuery匹配的对象中查找元素

3

我有一个如下的点击事件监听器:

$(".clickable").click(function (e) {

  var results= $(e.currentTarget).closest('div.set').find('.clickable');
      // returns 
      //[<label for=​"thumbnail" class=​"clickable">​1 Malaysia​</label>​,
      //<div class=​"thumbnail clickable">​…​</div>​]

  var label = $(results).find('label'); // returns [] (empty list)

}

我的问题是,如何从结果列表中选择标签元素?谢谢!

1
同样地,在所有情况下,e.currentTarget 应该是 this - Ja͢ck
1个回答

2

尝试使用.filter()代替.find()

var label = results.filter('label');

.find()方法可以搜索子元素,但在这里我们需要从集合中筛选出所需的元素,因此请使用.filter(selector)


同时,你也可以像 Satpal 所说的那样简单地使用:

var results= $(e.currentTarget).closest('div.set').find('label.clickable');

1
@Unicorn,只是好奇为什么不用var results= $(e.currentTarget).closest('div.set').find('label.clickable'); - Satpal
@Unicorn 很高兴能帮忙..! - Balachandran
1
@Satpal,因为我将在稍后的Div元素中使用这些值,这只是我个人偏好。 我喜欢为通用元素(results)选择一次,然后在子元素中进行进一步过滤,而不是进行两次非常相似的选择。例如:$(e.currentTarget).closest('div.set').find('label.clickable')$(e.currentTarget).closest('div.set').find('div.clickable') - pekcheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接