1

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

$('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\[\] 

谢谢你的帮助。:)

4

2 回答 2

3

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

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

你也可以使用

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

而不是.live你应该使用.on,如:

$(document).on("change", "input[name^=attachment]", function () {
于 2013-10-02T20:50:40.780 回答
1

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

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

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

于 2013-10-02T20:50:14.203 回答