2011-05-27 58 views
0

我无法将.live功能应用于具有唯一ID的特定输入标签。我做错了吗?有什么建议么?jquery实时功能不适用于特定选择器

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

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

回答

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(){ 
}); 

你最好的办法将是使用它的类选择,你已经正确。

+0

这听起来合乎逻辑enuf ..你对我遇到的问题有何建议? – 2011-05-27 11:25:14

+0

我在编辑我的答案给你一个替代方案。 – Nikhil 2011-05-27 11:27:49

+1

我已经给出了更新的代码。虽然它可以进一步调整,因为它会继续使用唯一ID在输入上调用die()和bind()。你可能想要存储一个标志来说例程已经通过绑定连接,而不是再次调用bind() – Nikhil 2011-05-27 11:37:00

3

如何:

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

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

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

}); 
+0

@Darin no..doesnt work – 2011-05-27 11:20:04

+0

@Darin它是如何改变什么的?这是所有关于选择'名称'attr然后 – 2011-05-27 11:22:03

+0

@Aakash Goel,你想通过'id'或'name'来选择吗? – 2011-05-27 11:22:34