我无法将.live功能应用于具有唯一ID的特定输入标签。我做错了吗?有什么建议么?jquery实时功能不适用于特定选择器
$('input.newQty').live('change', function(){
}); //works
$('input.newQty[id="'+naam+'"]').live('change', function(){
}); //does not work
我无法将.live功能应用于具有唯一ID的特定输入标签。我做错了吗?有什么建议么?jquery实时功能不适用于特定选择器
$('input.newQty').live('change', function(){
}); //works
$('input.newQty[id="'+naam+'"]').live('change', function(){
}); //does not work
更新:如果你必须使用现场活动这种情况下,我会派出的事件处理函数,而不是作为一个匿名函数。这可能是我会做的。
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(){
});
你最好的办法将是使用它的类选择,你已经正确。
如何:
$('#'+ naam).live('change', function() {
// ...
});
或者,如果你想使用name
属性,而不是id
必须是唯一的:
$('input.newQty[name="' + naam + '"]').live('change', function() {
// ...
});
@Darin no..doesnt work – 2011-05-27 11:20:04
@Darin它是如何改变什么的?这是所有关于选择'名称'attr然后 – 2011-05-27 11:22:03
@Aakash Goel,你想通过'id'或'name'来选择吗? – 2011-05-27 11:22:34
这听起来合乎逻辑enuf ..你对我遇到的问题有何建议? – 2011-05-27 11:25:14
我在编辑我的答案给你一个替代方案。 – Nikhil 2011-05-27 11:27:49
我已经给出了更新的代码。虽然它可以进一步调整,因为它会继续使用唯一ID在输入上调用die()和bind()。你可能想要存储一个标志来说例程已经通过绑定连接,而不是再次调用bind() – Nikhil 2011-05-27 11:37:00