jquery live函数不适用于特定的选择器

时间:2011-05-27 11:15:56

标签: jquery

我在将.live函数应用于具有唯一ID的特定输入标记时遇到问题。我这样做是错误的吗?有什么建议吗?

$('input.newQty').live('change', function(){
}); //works

$('input.newQty[id="'+naam+'"]').live('change', function(){
}); //does not work

2 个答案:

答案 0 :(得分:3)

怎么样:

$('#'+ naam).live('change', function() {
    // ...
});

或者,如果您想使用name属性而不是id,该属性必须是唯一的:

$('input.newQty[name="' + naam + '"]').live('change', function() {
    // ...

});

答案 1 :(得分:1)

更新:如果你必须在这种情况下使用实时事件,那么我会分出作为事件处理程序的函数,而不是将它作为匿名函数。这可能就是我要做的。

function myChangeHandler(e){
if($(this).attr("id")==naam))
{
    //found the right input, hook this event handler to the input directly and unbind it from all others
    $("input.newQty").die("change",myChangeHandler);
    $(this).bind("change",myChangeHandler);
}
//rest of the code goes here

}

$("input.newQty").live("change",myChangeHandler);

据我所知,现场选择器不能动态。因为您无法通过在运行时连接变量来构建实时事件的选择器。需要对它们进行全面评估才能使它们发挥作用。

因此,您不能将实时表达式视为

$('input.newQty[id="'+naam+'"]').live('change', function(){
}); 

您最好的方法是在正确完成后在类选择器上使用它。