2017-05-23 8 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

want-何を推測しようとするには、(li.addEventListener( 'クリック'、機能(){ はconsole.logを試してみてくださいthis.li.text()); }); –

+0

はすでにこれを試して、このエラーを受け取りました。 "Uncaught TypeError:li.addEventListenerは関数ではありません" – faisal

+0

var li = "

  • " + cat + "
  • "; –

    答えて

    1

    あなたは純粋なDOMを使用した場合()(参照のためhttps://developer.mozilla.org/de/docs/Web/API/EventTarget/addEventListenerを参照)EventTarget.addEventListenerを使用してのEventTargetへのEventListenerをバインドする必要があります。

    だからあなたのコード内では次のようになります。あなたもにイベントをバインドするDOM要素を作成する必要が

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

    注意。

    +0

    論理的には、あなたのソリューションごとに実行する必要がありますが、これを既に試しましたが、このエラーが発生しています** "Uncaught TypeError:li.addEventListenerは関数ではありません" ** – faisal

    +0

    編集;早すぎました。文字列にバインドすることはできませんが、DOM要素にバインドする必要があります。したがって、要素を作成するだけです。 liをjQuery appendメソッドまたは純粋なDOMメソッドを使用してDOMに挿入することができます。 – Severin

    +0

    はい、私は純粋なJSのソリューションを見つけるが、私はJQueryでこれをしようとしています。私は非常に小さなものを逃した可能性があります 配列の値がフェッチし、liとその作業の罰金でそれを表示するが、どのように正確にそれ自身の痛みを作る各項目をバインドする – faisal

    0

    入力したコードが実行することはできません...私はあなたが

    $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オブジェクトの間にはいくつかの違いがあります...以下のコードのようにJqueryオブジェクトを作成することができます var li = $( "

  • " + cat + "
  • "); – LinJI

    関連する問題