2016-09-30 10 views
0

私は口髭矯正JSテンプレートを介して関数で生成されるボタンを持っています。Clickイベント/バインドイベントは、Mustache JSでボタンを生成するときにjQueryで機能しません

{{#attributes}} 
    <a class="button--small btn" data-selector="{{selector}}">{{title}}</a> 
{{/attributes}} 

とそののサンプル出力は、しかし、私はこのボタンをクリックしたときに別のjquery機能を実行するために

<a class="button--small btn" data-selector=".news">More News</a> 

しようとしていますされているが、関係なく、私は.click(function() { });または.bindを使用するかどうかのそれはいないようです働く? console.logでも印刷されないので、適切な条件には慣れていません。ここで

はスクリプトです:あなたはeventを委任する必要が新たに作成された要素については

function lazyload(selector) { 
    $("a[data-selector^='"+selector+"']").bind("click", function(e) { 
      e.preventDefault(); 
      loadNews(selector); 
    }); 
} 

$(document).ready(function(){ 
    lazyload(".news"); // CALL FUNCTION READY FOR USAGE 
}); 
+0

単に「ニュース」をデータではなくクラスにする方が簡単かもしれません。 '$(" news ")...'などもできます。また、 '.bind'は廃止予定ですので、代わりに' .on'を使用してください(同じメソッドの署名)。最後に、あなたの ''要素がページの読み込み時に読み込まれますか?後であれば、委任されたイベントをサポートする '.on'のバージョンを使用する必要があります(jQueryのドキュメントを参照してください)。http://api.jquery.com/on/ – ADyson

答えて

2

:「ダイレクトと委任イベント」を参照してください。

function lazyload(selector) { 
    $(document).on("click", "a[data-selector^='"+selector+"']", function(e) { 
     e.preventDefault(); 
     loadNews(selector); 
    }); 
} 
+1

私は受け入れるまで1分の素晴らしい – WebDevDanno

+0

あなたは私の一日を作った!! :) どうもありがとう!!! –

関連する問題