jQuery相当于`return document.getElementById(theVar)’

我有一个javascript函数

function $m(theVar){ return document.getElementById(theVar) } 

上面代码的问题是,我要传递的元素是由ajax生成的,所以我需要类似jquery中的.live() ,除非它抛出一个错误

如何在jQuery中重写上述函数,以便以后生成的任何DOM元素也可以被检测到。

更新:

当我的页面首次加载时,它会加载

1)带代码的ajaxupload.js

 function ajaxUpload(form,url_action,msg){ var id_element= "pop-con"; function $m(theVar){ return document.getElementById(theVar) } if($m(id_element)==null){ erro += "The element of 3rd parameter does not exists.\n"; } } 

2)index.php与代码

 
x

3)现在点击一个按钮,下面的markUp被添加到#ajaxGeneratedmarkUp div(通过ajax生成的标记)

 

现在更改此输入类型文件,在javascript中进行调用。 现在它显示错误。

[注意:我只发布了我认为可能会影响我的问题的部分代码]

jQuery的选择器可以检测到新生成的项:

 $('#id'); 

所以在你的情况下:

 var theVar = 'something'; $('#' + theVar); //returns a jQuery object of the select item $('#' + theVar)[0]; //returns the first DOM object that jQuery finds with that id 

像这样:

 return $('#' + theVar)[0]; 

我想你需要在某处添加一个live调用来检测新的AJAX加载按钮。 这样,按钮将自动绑定到与其他答案一样正常工作的处理程序。 从你的评论中我猜你正在做其中一个:

  • 在加载AJAX的按钮中,你已经包含了一些不起作用的JS逻辑(比​​如onclick="do_something" )。
  • 您正在使用live方法将第二个按钮绑定到处理程序。

这是一个有效的例子。 虽然它不通过AJAX加载内容,但它确实加载了一个动态按钮。

http://jsfiddle.net/marcosfromero/VKfKL/

更新:另一个通过AJAX加载内容并使用live绑定新创建的按钮的示例:

http://jsfiddle.net/marcosfromero/h9RSC/