2

我有类似的东西:

$('input[type=file]').on('change', function(){ 
console.log('changed!'); });

它不起作用。它适用于其他表单元素,但不适用于 input[type=file]。但是,当我将 .on() 函数更改为 .live() 时,它工作正常。我使用 jQuery 1.8.3,但我想升级到 1.9.0,这样就不会再有 .live() 函数了。有任何想法吗?

4

3 回答 3

5

“开”适用于 jquery 1.8.3。您可以尝试此代码并检查下面的演示,该演示适用于我的 jquery 1.8.3。

$('input[type="file"]').on('change', function(event){ 
     console.log('changed!'); 
});

试试这个:演示

于 2013-01-18T08:17:10.207 回答
1

我有理论:

您确定您的选择器$('input[type=file]')实际上正在检索任何元素吗?如果您将输入动态插入到 DOM 中,则很有可能在运行选择器时它们不存在,这可以解释.live的工作原理。

尝试使用这段代码:

$('body').on('change', 'input[type=file]', function(event){
    console.log('Changed!');
});

如果它有效,你就发现了你的问题......你在元素存在之前选择它们并在代码运行后将它们插入到 DOM 中。

于 2013-01-18T09:05:05.910 回答
0

你也可以试试

$('input:file').on('change', function(event){ 
     console.log('changed!'); 
});
于 2013-01-18T08:23:39.500 回答