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