我只是附加了一些HTML到另一个JQuery对象。我想获得对新创建的dom节点的引用,以便我可以调用另一个函数。正如下面的代码所示,我没有得到我想要的参考。而不是新节点,我正在获取具有原始ID的节点。如何获得我刚刚在JQuery中引用的dom节点的引用?
var a = $("#id").append("some_html");
a.live('click', function(event){
alert("hello!");
});
我只是附加了一些HTML到另一个JQuery对象。我想获得对新创建的dom节点的引用,以便我可以调用另一个函数。正如下面的代码所示,我没有得到我想要的参考。而不是新节点,我正在获取具有原始ID的节点。如何获得我刚刚在JQuery中引用的dom节点的引用?
var a = $("#id").append("some_html");
a.live('click', function(event){
alert("hello!");
});
这取决于HTML是什么。如果它可以被包含在一个div
然后做到这一点:
var a = $("some_html").appendTo("#id");
(使用1.4+语法)一个完整的示例是这样的:
var a = $("<a />", { href: "/new/page", text: "Click Me" }).appendTo("#id");
这种差异是append
返回父对象(它不” t打破现有的链),并且appendTo
返回新创建的对象,即使它被附加后。
编辑:此外,您正确使用live
错误。在这种情况下,只要使用bind
或click
helper方法:
a.click(function(event){
alert("hello!");
});
最佳使用:最后,使用jQuery 1.4+,你可以做到这一点,没有变量保留必要的:
$("<a />", {
href: "#",
text: "Click Me",
click: function (e) {
e.preventDefault();
alert("hello!");
}
}).appendTo("#id");
var newNode = $('some_html');
$('#id').append(newNode);
newNode.live('click', function(event) {
alert('hello!');
});
Doug - 我留给Matt的相同评论,'$(“some_html”)'不创建元素,而是在DOM中搜索'文本 '。 –
user113716
2010-06-21 01:45:30
@patrick - 当替换* actual * html(例如'“
其实他的'live'将会工作,在那个链上选择器仍然是'#id',你可以使用['.selector'](http://api.jquery.com/selector/)在这里看到一个快速测试:http://jsfiddle.net/PzPgY/ – 2010-06-21 01:52:39