2011-09-22 5 views
0

私はリストに要素を追加するために使用した関数を持っています。クリック。ドキュメントオブジェクトを使用するとうまくいきますが、アンダースコアテンプレートを使用してjQueryを使用すると、要素は正常に追加されますが、イベントはトリガーされません。他の関数の中から呼び出されたイベントjQueryのアンダースコアテンプレートが機能しません

var addElement = function(parentElement){ 
    //would work 
    this.thisElement = document.createElement('li'); 
    parentElement.appendChild(thisElement); 
    $(this.thisElement).click(function(event){ 
     alert('working'); 
    }); 

    //doensn't work 
    this.template = _.template($('#fileListEntity').html()); 
    var li = this.template(); 
    $(parentElement).append(li); 
    $(li).click(function(e) { 
     alert('notWorking'); 
    }); 
}; 

答えて

0

メガコルの助けを借りて、これが答えです。

this.template = _.template($('#fileListEntity').html()); 
var li = $(this.template({name:doc.name})); 
$(parentElement).append(li); 

li.click(function(e) { 
    alert('click'); 
}); 
2

template()は要素を返しますか?クリックイベントがうまくいかない文字列(魔法使いのほとんどのテンプレートシステム)を返す場合。

また、クリック方法を閉じないと構文エラーがあります。

+0

私は文字列を返すかもしれないと思いますが、私は$(li)を使って再度取得するので、jQueryはデバッガを見ると使えるオブジェクトに変えそうです。 –

+0

遅れて申し訳ありません...そうですが、parentElementに追加したアイテムと同じアイテムではありません。 – megakorre

関連する問題