2

jQueryによっていくつかのDIVが挿入されています。構造は次のようになります。

<div class="preview_images" id="preview_upload">
     <div class="image_box" id="img_box8793">
         <p>
            <img class="count_19" src="[...]">
            <br>
             <span class="del_img">löschen</span>
         </p>
     </div>
</div>

live()を使用する前に、on()関数を使用したいと思います。これは私のjQuery関数です:

$('#preview_upload div p').on("click", "span", function () {
    alert('###');
    parent_div_id = $(this).parent().parent('div').attr('id');
    $(this).parent().parent('div').fadeOut('slow');
    $('#final_img_prev #' + parent_div_id).remove();
    del_val = $(this).attr('title');
    $('#customfields-tf-150-tf,#customfields-tf-16-tf, #customfields-tf-17-tf, #customfields-tf-18-tf, #customfields-tf-19-tf').each(function () {
        if ($(this).val() == del_val) {
            $(this).val('');
            var img_count = jQuery.cookie('img_count');
            new_img_count = parseInt(img_count) - 1;
            if (new_img_count > 0) {
                jQuery.cookie('img_count', '', {
                    expires: -1
                });
                jQuery.cookie('img_count', new_img_count, {
                    expires: 1
                });
                if (new_img_count < 4) {
                    new_file = '<input type="file" id="file1" name="file1">';
                    $('#uploadForm .file_box').html('');
                    $('#uploadForm .file_box').html(new_file);
                    $('#uploadForm').fadeIn();
                }
            }
            return false;
        }
    });
});

alert()は起動されていません。

エラーはどこにありますか?

編集:

これはあなたの答えの後の私のコードです:

jQuery(function($){
   $(document).ready(function() {
      $('#preview_upload div p').on("click", "span", function(){
            alert('###');
      });
   });
)};

Jquery1.7.2を使用しています。Firebugはエラーを表示しません。alert()は発生しません。

DIVとそのコンテンツが動的に作成されるためかもしれません。

4

3 に答える 3

3

を使用する場合on、要素の静的な親の 1 つからイベントを委任する必要があります。divは動的に生成されるため、イベントを委任するためにorオブジェクトの#preview_uploadような別の要素を選択する必要があります。これを試してください。bodydocument

$(document).on("click", "#preview_upload span", function(){
   // ..
})
于 2012-08-14T17:40:38.950 に答える
1

readyこのコードをドキュメントイベントでラップすると、正常に動作します

$(function(){

   $('#preview_upload div p').on("click", "span", function(){
       alert("working")   
      //your code

   });

});

作業サンプル: http://jsfiddle.net/HBunv/

それでも問題が解決しない場合は、ページ内の他のスクリプト エラーを確認してください。Firebug コンソールは、スクリプト エラーの原因を特定するのに役立ちます。

于 2012-08-14T17:35:44.010 に答える
0

古いバージョンの jQuery (1.7 未満) を使用しているか、コンテンツが DOM にロードされる前にコードを実行していると思います。つまり、$(document).ready(function().

以下の例では、コードは正常に機能しており、アラートが発生しています!

動作中のjsFiddle の例を確認してください。

于 2012-08-14T17:38:03.037 に答える