委托jquery - 获取父容器

时间:2012-01-18 12:28:47

标签: jquery

我想选择.section容器中的所有p元素,但只包含已包含a.open链接的元素

$('.section').delegate('a.open', "click", function(){
    $(this).parent().filter('p').show(); //I want to select all `p` elements in .section container, but just in th one that containts the a.open link that has been clicked
})

由于

3 个答案:

答案 0 :(得分:7)

您可以将delegateTarget作为上下文传递(delegateTarget是事件对象的一个​​属性,它传递给处理函数,并且是“处理”委托的DOM元素

$('.section').delegate('a.open', "click", function(e){
    $('p', e.delegateTarget).show()
    //This means show all <p> elements in the context defined by e.delegateTarget
})

看看这个小提琴http://jsfiddle.net/jWYKv/

答案 1 :(得分:2)

试试这个:

Closest(向上移动并停在第一个.section),Find(查找由给定选择器过滤的所有后代)

$('.section').delegate('a.open', "click", function(){
    $(this).closest('.section').find('p').show();
})

答案 2 :(得分:1)

$(this).parents('th:first').find('p').show();

怎么样?

编辑:误解了您对问题的解释

$(this).parents('.section:first').find('p').show();