[英]RequireJS and using this.id in a module?
我將應用程序切換到RequireJS。
在我的應用中,我檢測到用戶何時單擊具有特定類的元素。
我使用click事件和this.id來獲取元素的唯一ID。
現在,我已經將此功能移到Require的模塊中,我只為this.id返回“未定義”。
我猜該模塊沒有調用該函數時單擊的引用。
我似乎也無法將this.id傳遞給模塊。
“使用關鍵字作為標識符無效”。
那么,如何獲得所單擊元素的唯一ID?
$(document).on('click', '.userSelect', function (myID) {
var retConvo = getConvoID.convoData();
convoID = retConvo.convo;
isGroup = retConvo.group;
console.log("Conversation ID is: " + convoID + " and IsGroup: " + isGroup);
});
這是它正在調用的模塊代碼。
define(function() {
return {
convoData: function(myID) {
var userSelected = this.id;
console.log('User Selected ID is: ' + userSelected);
if (userSelected == myID) {
alert("You can't message yourself.");
return false;
} else {
console.log("Selected User ID is: " + this.id);
// change background to show user is selected.
$("div.userSelected").removeClass("userSelected");
$(this).addClass("userSelected");
convoID = this.id;
isGroup = 'N';
console.log("emitting convo users id: " + convoID);
return {
convo: convoID,
group: isGroup
};
}
}
}
});
因此,當到達上面的this.id時,它是未定義的。 當全部放在一個js文件中時,效果很好。
感謝您的幫助和指點。
有兩件事:
myID
的convoData
功能 this
在功能指的是本地this
。 如果希望它引用單擊的元素,則可以將該元素作為參數傳遞給函數,或者在函數調用時將其綁定: var retConvo = getConvoID.convoData(myId).bind(this);
或者, var retConvo = getConvoID.convoData(myId, this);
然后將convoData
更改為function(myID, element)
convoData
function(myID, element)
並引用element.id
; ===
代替==
-本身與這個問題無關,但可以幫助您避免出現問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.