2017-05-23 69 views
0

試圖從catListView.render()中的model.data調用數組,它完美地顯示瞭如何使數組項可點擊(即單擊cat0或單擊cat2)。獲取單擊數組項目

$(function() { 
var model = { 
    data: ["cat0", "cat1", "cat2", "cat3"], 
} 

var oct = { 
    init: function() { 
     catList.init(); 
    }, 
    getCat: function() { 
     return model.data; 
    }, 
}; 

var catListView = { 
    init: function() { 
     this.$catList = $("#cat-list"); 
     catList.render(); 
    }, 
    render: function() { 
     var catList = this.$catList.html(''); 

     var cats = oct.getCat(); 

     for (var i = 0; i < cats.length; i++) { 
      var cat = cats[i]; 

      var li = "<li>" + cat + "</li>"; 
      addEventListener(li, "click", function(){      
       console.log(this.li.text()); 
      }); 
      catList.append(li); 
     } 
    } 
}; 

oct.init(); 
}()); 
+1

嘗試li.addEventListener( '點擊',函數(){ 的console.log( this.li.text()); }); –

+0

已經試過這個,得到這個錯誤「Uncaught TypeError:li.addEventListener不是函數」 – faisal

+0

var li =「

  • 」+ cat +「
  • 」; –

    回答

    1

    您應該結合使用EventTarget.addEventListener一個事件監聽到事件目標()使用純DOM時(參見https://developer.mozilla.org/de/docs/Web/API/EventTarget/addEventListener供參考)。

    因此,在你的代碼將是:

    var li = document.createElement('li'); // create an element instead if string 
    
    li.innerText = cat; 
    
    li.addEventListener("click", function(){      
        console.log(li.innerText); 
    }); 
    

    請注意,您還需要創建事件綁定到DOM元素。您鍵入

    +0

    邏輯上它應該按照你的解決方案來完成,並且已經嘗試了這個,但是得到這個錯誤得到這個錯誤**「Uncaught TypeError:li.addEventListener不是函數」** – faisal

    +0

    編輯;太快了。您不能綁定到字符串,但應綁定到DOM元素。因此只需創建一個元素。您可以使用jQuery append或純DOM方法將li插入到DOM中。 – Severin

    +0

    是的,我在純JS中找到解決方案,但我正在嘗試在JQuery中執行此操作。它可以讓我頭痛,可能我錯過了很小的東西, 數組值是取得並顯示它在李和它的工作正常,但如何正確地綁定每個項目與自己讓我痛苦 – faisal

    0

    的代碼不能運行......我試着猜測你什麼want-

    $li.bind("click", function() { 
        console.log("way 2", $(this).index()); 
    }); 
    

    https://codepen.io/linjiyeah/pen/QvzVQN

    +0

    Uncaught TypeError:li.bind不是一個函數:( – faisal

    +0

    DOM和Jquery Object之間有一些區別...你可以像下面的代碼一樣創建一個Jquery對象 var li = $(「

  • 」+ cat +「
  • 「); – LinJI