使用.change()时jQuery选择器工作正常,但在使用.live('change')时效果不佳

时间:2013-10-02 20:45:34

标签: javascript jquery html5

我的代码有一个奇怪的问题;

$('input[name=attachment\\[\\]').change(function(e) {
    alert("test");
});

工作正常,它会警告“测试”,但这仅适用于我的第一个输入字段,我有一个[添加更多附件]按钮,在页面加载后添加额外的输入字段,所以我不能使用.change(),我需要使用.live('change',func ....而不是。

当我使用此代码时;

$('input[name=attachment\\[\\]').live('change', function(e) {
alert("test");
});

它不再有效,我得到这个语法错误;

Uncaught Error: Syntax error, unrecognized expression: input[name=attachment\[\] 

感谢您的帮助。 :)

2 个答案:

答案 0 :(得分:3)

表达错误。您缺少属性选择器的右括号。

$('input[name=attachment\\[\\]]')

您也可以使用

$('input[name="attachment[]"]')
//or
$('input[name^=attachment]')

您应该使用.live代替.on,而不是:{/ p>

$(document).on("change", "input[name^=attachment]", function () {

答案 1 :(得分:1)

如果您想要将处理程序附加到动态元素,则需要在父元素上使用on()委托:

$(document).on('change','input[name=attachment\\[\\]',function(e) {
    alert("test");
});

PS:我仍然对\\感到困惑,但至少应该让你朝着正确的方向前进。