2013-04-21 157 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

相關問題