2010-05-04 48 views
1

我有一个事件处理程序需要根据一些保存的数据对其中一个子项执行某些操作。所以我现在做的是这样的:如何使用'this'制作复杂的选择器jquery

// Get the ID of 'this' 
item_id = $(this).attr('id'); 

// building a selector like $('#item1 .child_3') 
$('#' + item_id + ' .child_' + spVal).addClass('blah'); 

但是,这似乎有点麻烦。我试过了:

$(this + ' .child_' + spVal).addClass('blah'); 

它不起作用,这并没有让我感到惊讶。有没有更好的方式来做到这一点,然后我上面列出的成功方式?

回答

4

您可以使用.find()(任何后代),或.children()(仅限于直接的儿童),像这样:

$(this).find('.child_' + spVal).addClass('blah'); 

.find()是相当于你目前拥有的,.children()就等于这个:

$('#' + item_id + ' > .child_' + spVal).addClass('blah'); 
+0

我从来没有使用.find之前的原因 - 感谢新玩具:-) – Stomped 2010-05-04 12:09:57

2

可以选择孩子喜欢这个问题,以及:

$(this).children('.child_' + spVal).addClass('blah');