我为jQuery编写了一个插件,但现在我的用户要求能够在同一页面上的各种元素上运行我的插件,所以我试图重写一下。
我的活动有问题。
这是正在发挥作用的。
$(".jTagLabels label").live('mouseenter',function(){
$("#"+$(this).attr('rel')).css('opacity',1).find("span").show();
$(".jTagDeleteTag").show();
});
现在我正在尝试在特定情况下注册此事件,但它无效。
$(".jTagLabels label",container).live('mouseenter',function(){
$("#"+$(this).attr('rel')).css('opacity',1).find("span").show();
$(".jTagDeleteTag",container).show();
});
console.log(container)返回正确的dom元素......
可能很重要的是,当我设置事件时,没有创建jTagLabel,这就是我使用live()函数的原因......
答案 0 :(得分:5)
使用delegate()
,它更清晰,就是它的用途,即使生成的代码可能是相同的。
同样取决于您的代码上下文,您的container
变量可能会在绑定事件和触发事件之间失去其值。
$(container).delegate(".jTagLabels label",'mouseenter',function(){
var $this = $(this);
$("#"+$this.attr('rel')).css('opacity',1).find("span").show();
// There should be an easier way to find your container,
// like .closest('.someclass')
$this.parent().parent().find('.jTagDeleteTag').show();
});