2010-06-21 43 views
2

我只是附加了一些HTML到另一个JQuery对象。我想获得对新创建的dom节点的引用,以便我可以调用另一个函数。正如下面的代码所示,我没有得到我想要的参考。而不是新节点,我正在获取具有原始ID的节点。如何获得我刚刚在JQuery中引用的dom节点的引用?

var a = $("#id").append("some_html"); 
a.live('click', function(event){ 
    alert("hello!"); 
}); 

回答

3

这取决于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错误。在这种情况下,只要使用bindclick helper方法:

a.click(function(event){ 
    alert("hello!"); 
}); 

最佳使用:最后,使用jQuery 1.4+,你可以做到这一点,没有变量保留必要的:

$("<a />", { 
    href: "#", 
    text: "Click Me", 
    click: function (e) { 
    e.preventDefault(); 
    alert("hello!"); 
    } 
}).appendTo("#id"); 
+0

Doug - 我留给Matt的相同评论,'$(“some_html”)'不创建元素,而是在DOM中搜索'文本'。 – user113716 2010-06-21 01:45:30

+2

@patrick - 当替换* actual * html(例如'“

Stuff
”')它会创建它:) – 2010-06-21 01:49:17

+0

其实他的'live'将会工作,在那个链上选择器仍然是'#id',你可以使用['.selector'](http://api.jquery.com/selector/)在这里看到一个快速测试:http://jsfiddle.net/PzPgY/ – 2010-06-21 01:52:39

0
var newNode = $('some_html'); 
$('#id').append(newNode); 

newNode.live('click', function(event) { 
    alert('hello!'); 
}); 
相关问题