さて、私は以前に.onをかなりうまく使用しましたが、動的要素をまったく認識していないため、今回は期待どおりに機能していません。
http://www.MetalGains.comにアクセスして問題を参照してください。[デモを表示]をクリックして、デモの資格情報を使用してログインします。「鉛筆」をクリックすると、編集機能が機能することがわかります。ただし、アセットを追加してから、追加した鉛筆をクリックすると、機能しないことがわかります。
ある時点で、このコード行が動的に追加されます。
<div class='edit-item'><a name='"+$id+"' href='#add-asset-"+status+"' class='edit'></a></div>
呼び出したいJavaScriptは以下のとおりです。念のために言っておきますが、動的なものではなく、ページの読み込みで機能します。私は何が欠けていますか?
$(".edit-item .edit").on('click', function(){
return false;
}).each(function(){
$(this).fancybox({
afterClose: function(){
//we have to remove this class so that if someone tries to add a new asset it will use the
//add script and not the update script
$(".asset-form").removeClass("update");
//We need to set the values back to empty so that they aren't prepopulated when someone
//tries to add an asset later.
$(".asset-form :input[name='type']").val("");
$(".asset-form :input[name='year']").val("");
$(".asset-form :input[name='quantity']").val("");
$(".asset-form :input[name='ounces']").val("");
$(".asset-form :input[name='paid']").val("");
$(".asset-form :input[name='date']").val("");
$(".asset-form :input[name='notes']").val("");
//we remove the hidden field that passes the asset id.
$(".asset-form :input[name='editId']").remove();
}//end afterClose
}); //end edit fancybox
}); //end each
ちなみに、これは完璧に機能します:
$(".note-img").on('click', function(){
return false;
}).each(function(){
$(this).fancybox();
});
この動的に追加されたコンテンツに関連して:
<a href='#note-"+$id+"' class='note-img'></a><div class='note' id='note-"+$id+"'>"+$notes+"</div>