我在将.live函数应用于具有唯一ID的特定输入标记时遇到问题。我这样做是错误的吗?有什么建议吗?
$('input.newQty').live('change', function(){
}); //works
$('input.newQty[id="'+naam+'"]').live('change', function(){
}); //does not work
答案 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(){
});
您最好的方法是在正确完成后在类选择器上使用它。