0

我有一个DIV元素,其中包含动态创建TEXTAREAs的 and<input type="file"/><input type="checkbox"/>

目前我已经在上面绑定了三个事件,DIV如下所示

jQuery("#uniqueId ").bind("click change keypress", function(e){
    ....
    ....
});

现在出现问题是当我单击file输入按钮以浏览并上传文件或选中复选框时,我收到以下错误

Uncaught InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable. 

myxFunction myXjavscript.js:1172
(anonymous function) myXjavscript.js:109
f.event.dispatch jquery-1.7.1.min.js:3
h.handle.i

并且正因为如此filecheckbox输入不起作用并引发错误。我只想绑定上面的事件,TEXTAREA而不是其他元素DIV

一起使用"click change keypress"事件的原因是因为在 Chrome 中,我在 Textarea 上执行动态操作以在从 Textarea 添加/编辑/删除文本后获取光标位置。所以要记录所有这些我需要添加这三个事件的东西。

我怎样才能做到这一点?

4

2 回答 2

1

如果您只想将事件绑定到 #uniqueId 中包含的文本区域,请使用第二个参数(委托选择器):

jQuery("#uniqueId ").on("click change keypress", "textarea", function(e){
    ....
    ....
});

编辑:没有意识到你在使用.bind,总是使用.on!这很棒。http://api.jquery.com/on/

于 2013-09-30T07:32:52.123 回答
0

你应该在使用它之前检查元素,

if(jQuery("textarea#uniqueId").length)
{
  jQuery("textarea#uniqueId").bind("click change keypress", function(e){
      ....
      ....
  });
}

或者,如果该元素存在于页面中,则在文档就绪函数中编写代码,例如,

$(function(){
  jQuery("textarea#uniqueId").bind("click change keypress", function(e){
      ....
      ....
  });
});

如果您与其他人一起使用,则 id也必须是唯一的,您应该使用 id 指定,例如textarea#uniqueidid conflictselementselement

于 2013-09-30T07:29:53.060 回答