我正在研究一個簡單的客戶端接口,其中我有一個jQuery對象,當我單擊一個超鏈接時,我想直接訪問它。簡化的代碼:通過DOM遍歷jQuery直接訪問javascript對象
<div class="controls">
<div class="score">
<a class="button" href="/add">Add points!</a>
</div>
</div>
$(".controls").myControls();
$.fn.myControls = function() {
return $.extend(this, $.myControls).initialize();
}
$.myControls = {
initialize: function() {
this.scoreElement = $("div.score", this);
this.linkElement = $("a", this.scoreElement);
this.scoreElement.score = 0;
var _this = this;
this.linkElement.click(function() {
_this.clickHandler(this);
});
},
clickHandler: function(element) {
var scoreElement = $(element).parent();
scoreElement.score = 1;
}
}
說明:.controls
元件具有.score
元件,其兼作得分信息(this.scoreElement.score
)的容器。當我點擊.score
元素中的一個鏈接時,我發現父元素,它與DOM中的元素相同,爲this.scoreElement
,並嘗試將其score
屬性設置爲1.顯然,這不起作用,因爲本地scoreElement.score
屬性在clickHandler
方法是「未定義」。
因此,這裏是我的問題:是有直接通過遍歷與jQuery的DOM訪問我this.scoreElement
對象的簡單方法嗎?
當然,我可以用某種方式檢查是否this.scoreElement == $(element).parent()
,然後訪問我的this.scoreElement
對象中的正確屬性,但直接訪問會更加優雅和健壯。這可能嗎?我是否以錯誤的方式去做?謝謝! PS:忽略我使用parent()
找到scoreElement
的事實,我只用它來說明我的問題。除非它是問題的一部分,在這種情況下,不要忽略:)
這一切都非常令人費解。你究竟在努力實現什麼? –
我實際上構建的是一個簡單的骰子游戲,通過點擊與骰子相關的鏈接可以「保留」任何骰子;這個鏈接是構成死亡的DOM元素的一個子元素。我認爲我最好爲每個死亡構建一個單獨的對象,這會讓我的問題消失,但我仍然想通過獲得一個很好的解決方案/回答我的問題來學習一點。 – Phortuin