ハイパーリンクをクリックしたときに直接アクセスしたいjQueryオブジェクトがある単純なクライアント側インターフェースに取り組んでいます。簡略化されたコード:
<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 と同じ要素である親要素が見つかり、そのプロパティを 1 にthis.scoreElement
設定しようとします。メソッドのローカルプロパティが"未定義"。score
scoreElement.score
clickHandler
ここに私の質問this.scoreElement
があります。jQuery を使用して DOM をトラバースして、オブジェクトに直接アクセスする簡単な方法はありますか?
確かにthis.scoreElement == $(element).parent()
、何らかの方法でオブジェクトの正しいプロパティにアクセスできるかどうかを確認できthis.scoreElement
ますが、直接アクセスする方がエレガントで堅牢です。これは可能ですか?私は間違った方法で進んでいますか?ありがとう!
parent()
PS:を見つけるために使用するという事実は無視してscoreElement
ください。問題を説明するためにのみ使用します。それが問題の一部でない限り、その場合は無視しないでください:)