我正在尝试创建一个修改子元素的函数。 稍后,子元素会被附加到其他地方,但我仍然需要一种方法将它引用到原始父元素。
例如......
我的父元素有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
答案 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');