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
绑定新创建的按钮的示例: