我正在开发一个涉及一些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字段重新检索它?
答案 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方法。