在取出元素后保持对子元素的引用

时间:2014-04-18 12:29:04

标签: javascript jquery

我正在尝试创建一个修改子元素的函数。 稍后,子元素会被附加到其他地方,但我仍然需要一种方法将它引用到原始父元素。

例如......

我的父元素有item类,里面是一个带有'modal'类的子元素。我认为,通过在开头绑定这个函数,'var modal'已经指向了子元素'.modal',所以当我稍后调用它时它在dom中的位置并不重要。我'虽然错了..在bind'modal'函数中使用闭包会帮助我吗?

看我的小提琴。 http://jsfiddle.net/sw45W/

$('.item').bind('modal', function() {
   var modal = $(this).find('.modal');
   modal.hide(); // this doesn't hide as var modal doesn't seem to be cached
});

$('.item .modal').appendTo('#append'); // append these somewhere else

$('#item').trigger('modal'); //call the modal function

2 个答案:

答案 0 :(得分:0)

以下是使用闭包的示例。

$('.item').bind('modal', (function() {
    var modal = $(".item").find('.modal');
    return function(){
        modal.hide();
    };
})());

$('.item .modal').appendTo('#append');
$('#item').trigger('modal');

答案 1 :(得分:0)

我能够像这样做..

我正在使用'this'作为我的引用独立迭代这些项目,这样我可以缓存我需要的子元素,这样当我绑定事件时,我引用了正确的元素。

$('.item').each(function() {
    // attach one event at a time
    var modal = $(this).find('.modal');
    $(this).bind('modal', function() { 
      modal.hide();
    });
});
$('.item .modal').appendTo('#append');
$('#item').trigger('modal');