关于插入DOM的Javascript对象的澄清?

关于插入DOM的Javascript对象的澄清?,javascript,jquery,dom,Javascript,Jquery,Dom,我正在从事一个涉及jQuery/原生Javascript编程的个人项目。我希望有人能澄清我在代码中看到的问题。我对Javascript中创建的对象与DOM中的对象之间的关系感到困惑 使用jQueryUI(制表符功能)时,我的程序的行为会有所不同,这取决于我是从Javascript目录操作对象,还是首先从DOM API访问对象,这让我相信这两个引用并不相等 例如: myObject = $(document.createElement("div")).attr("id", "tabs"); $("

我正在从事一个涉及jQuery/原生Javascript编程的个人项目。我希望有人能澄清我在代码中看到的问题。我对Javascript中创建的对象与DOM中的对象之间的关系感到困惑

使用jQueryUI(制表符功能)时,我的程序的行为会有所不同,这取决于我是从Javascript目录操作对象,还是首先从DOM API访问对象,这让我相信这两个引用并不相等

例如:

myObject = $(document.createElement("div")).attr("id", "tabs");
$("body").append(myObject);
现在,我发现以下示例可以正常工作:

$("#tabs").tabs();
但以下情况并非如此:

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


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

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

既然你这么做了:

myObject = $(document.createElement("div")).attr("id", "tabs");
$($(document.createElement(...)...);
您已经有一个jquery对象,因此应该能够执行以下操作:

myObject.tabs();
通过这样做:

$(myObject).tags();
实际上,您正在这样做:

myObject = $(document.createElement("div")).attr("id", "tabs");
$($(document.createElement(...)...);
我不确定这是什么预期的行为

还请记住,您可以这样做(并且应该支持这种方式):

var myObject=$(“”)attr(“id”,“tabs”);

var
使其在作用域中成为局部的(这是您95%的时间所需要的),您可以使用jquery创建任意标记,而无需使用原始JS方法。

+1表示
var
和简化的元素创建。我不明白为什么会被否决。酷,谢谢你的建议。我喜欢$(“”)方法。这样做有效吗?$(“”)@darren:是的,它有效,但不建议在非常重要的情况下使用(imho),因为如果包含动态文本,它可能无法正确转义,等等,而attr()方法(等等)将正确转义内容并确保HTML有效。由于您已经有一个jQuery对象,因此不需要编写
$(myObject).tabs()
,正如cletus已经指出的那样;正确的方法是执行
myObject.tabs()