jqueryの.on( "click")イベントに対してハンドラーが実行される前に、確認ダイアログチェックを追加しようとしています。これはオリジナルです:
$(this.var_mainSelector).on("click",
this.var_acceptOfferSelector,
this.onAcceptOffer
);
私はもう試した:
$(this.var_mainSelector).on("click", this.var_acceptOfferSelector,
function() {
var test = confirm("are u sure?");
if(test) {
this.onAcceptOffer
}
}
前もって感謝します!
ほとんど;)クロージャー自体が新しい「これ」を定義するので、this.onAcceptOffer
もう定義されていません。
ソリューション
1)これを自分で保存する
var self = this;
$(this.var_mainSelector).on("click", this.var_acceptOfferSelector, function(evt) {
var test = confirm("are u sure?");
if(test) {
self.onAcceptOffer.call(this, evt);
}
});
2)を使用しないでくださいfunction
。代わりに使用する()=>
$(this.var_mainSelector).on("click", this.var_acceptOfferSelector, (evt)=>{
var test = confirm("are u sure?");
if(test) {
this.onAcceptOffer.call(null, evt); // original "this" (the clicked element) is lost
}
});
矢印関数( "()=>")は関数のコンテキストを変更していません
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加