2011-06-01 63 views
1

我为jQuery写了一个插件,但现在我的用户要求能够在同一页上的各种元素上运行我的插件,所以我试图重写它。使用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(容器)返回正确的DOM元素...

这可能是重要的说,当我安装时没有jTagLabels创建,这就是为什么我使用的live()函数...

回答

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(); 
}); 
相关问题