2013-04-21 112 views
0

我正在尝试写一个jQuery插件的新方法。为什么我不能访问这里的元素(jQuery插件)

var $detailbox = $('.detailBox') ; 

TargetList.init($detailbox); 

TARGETLIST:

TargetList = { 

    init: function (elem) { 

     console.log($(elem)); 

    } 
}; 

ELEM将返回:

[section#detailBox. detailBox, selector: ".detailBox", context: document, jquery: "1.9.1", constructor: function, init: function…] 

第一个问题:这是什么?

二,更重要的问题:element.id为什么会返回undefined?

我的猜测是,我不能简单地将n对象传递给init()方法,并期望我可以控制它吗? 但我怎么能这样做,假设我想保持这种结构?

+0

棒与尝试和测试插件模式。你不可能改善他们。 – 2013-04-21 20:46:29

+0

@ Beetroot-Beetroot 我同意,但我浪费了过去的48小时测试了一堆模式,几乎不喜欢它们。 我在这里发现这种模式:http://www.impressivewebs.com/my-current-javascript-design-pattern/ 这可能不是一个完全的插件模式,但还有什么? 我喜欢它的语法,我想这比我官方指南中的模式更容易处理。我是否错过了一些不好的东西,这会阻止我使用它? 感谢您对这个话题的意见,无论如何,我很感激所有的事情,因为这让我很难受。 – Sprottenwels 2013-04-21 21:07:00

+1

Sprottenwels,或许还有更多的问题,而不是问题中的内容,但因为它没有证据显示jQuery插件。不喜欢你发现的模式不会帮助你。忘记“喜欢”,认为“学习”。你不会猜测插件的存在。 – 2013-04-21 22:36:07

回答

1

记录的对象我s jQuery Object

对于第二个问题,id is not a method of jQuery。它是DOM object的财产。

那么试试这个

$(elem)[0].id$(elem).attr('id')

+0

感谢你们两位!有没有可能简化这一点,对我来说似乎有点混乱,因为我每次都必须经过attr()。 – Sprottenwels 2013-04-21 19:47:12

+1

在元素之后使用索引将'jQuery对象'转换为'DOM对象',这将暴露对象的属性。所以你可以直接引用具有元素属性的元素。所以'$(elem)[0] .id' – 2013-04-21 20:06:23

1

console.log($(elem));这只是在控制台上打印jquery对象。

,看着这样的:

[section#detailBox. detailBox, selector: ".detailBox", context: document, jquery: "1.9.1", constructor: function, init: function…] 

展示的,你通过你的元素init成功

访问ID:

尝试

$(elem).attr('id'); 
+0

我是否也可以传递DOM对象,以更好地访问它的属性? – Sprottenwels 2013-04-21 19:50:30

+0

是的,你可以........ – 2013-04-21 19:56:13

相关问题