簡體   English   中英

RequireJS並在模塊中使用this.id?

[英]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文件中時,效果很好。

感謝您的幫助和指點。

有兩件事:

  1. 它似乎並不像你傳遞myIDconvoData功能
  2. 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 ;
  3. 在您的代碼中使用===代替== -本身與這個問題無關,但可以幫助您避免出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM