关于插入DOM的Javascript对象的说明?

时间:2009-12-26 22:38:33

标签: javascript jquery dom

我正在开发一个涉及一些jQuery /本地Javascript编程的个人项目。我希望有人可以澄清我在代码中看到的问题。我对在Javascript中创建的对象和作为DOM一部分的对象之间的关系感到困惑。

当使用JQuery UI(标签功能)时,我的程序行为会有所不同,具体取决于我是否从Javascript目录操作我的对象,或者我是否首先从DOM API访问它,这让我相信这两个引用不是相等。

例如:

myObject = $(document.createElement("div")).attr("id", "tabs");
$("body").append(myObject);

现在,我发现以下示例正常工作:

$("#tabs").tabs();

但以下情况并非如此:

$(myObject).tabs();

我是否正确假设通过$(“#tabs”)检索的对象与我在Javascript(myObject)中手动创建的对象不同或工作方式不同?

将对象插入DOM后是否会调用某种机制?我将它插入DOM之后是否应该修补它,而是通过其id字段重新检索它?

1 个答案:

答案 0 :(得分:5)

使用原始JS方法创建元素与使用jQuery引用的任何元素没有什么不同,除了由$(...)之类的表达式找到的元素包装在jquery对象中。

既然你这样做了:

myObject = $(document.createElement("div")).attr("id", "tabs");

你已经有了一个jquery对象,所以你应该能够这样做:

myObject.tabs();

通过做:

$(myObject).tags();

你实际上是这样做的:

$($(document.createElement(...)...);

并且我不确定它的预期行为是什么。

另外请记住,你可以这样做(并且应该采用这种方式):

var myObject = $("<div></div>").attr("id", "tabs");

var使其在范围内是本地的(这是你想要的95%的时间),你可以使用jquery创建任意标记而不使用原始JS方法。