0

ユーザーが削除をクリックしたときに、以下のコードを使用して行を非表示にすることができましたが、これが機能しなくなった理由

$(document).ready(function () {
    $('.deleteRecord').live( function() {
        if(confirm("Are you sure?")){
            $(this).closest('tr').fadeOut();
        }
    });
});

ハムライン

\#{link_to image_tag('/img/icons/packs/diagona/16x16/101.png', :border => 0), schedule, :method => :delete, :remote=>true, :class=>'deleteRecord'}

これは私のapplication.js内にあるもので、他のすべてのイベントは機能しているかトリガーしているようです。

//= require jquery
//= require rails
//= require jquery_ujs
//= require jquery-ui
//= require best_in_place
//= require plugins

//= require messages
//= require_self


$(document).ready(function() {
    jQuery(".best_in_place").best_in_place();
    $('.best_in_place').bind("ajax:success", function(){
        $(this).closest('tr').effect("pulsate", { times:3 }, 500);
    });

});


$(window).load(function () {
    $('#tab-panel-1').createTabs();
    $('#dataTable').dataTable(
        {
            "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
            "aaSorting": [[ 4, "desc" ]]
        }
    );
});

$(document).ready(function () {
    $('.deleteRecord').on('click', function() {
        if(confirm("Are you sure?")){
            $(this).closest('tr').fadeOut();
        }
    });

    $('#notice').effect("pulsate", { times:3 }, 500);



});
4

3 に答える 3

1

関数を誤用していると思いますlive

$(document).ready(function() {
    $('.deleteRecord').live('click', function() {
        if(confirm("Are you sure?")){
            $(this).closest('tr').fadeOut();
        }
    });
});

そして今、live非推奨になっているので、そのまま使用してくださいon

$(document).ready(function() {
    $('.deleteRecord').on('click', function() {
        if(confirm("Are you sure?")){
            $(this).closest('tr').fadeOut();
        }
    });
});

jQuery API .on()

編集

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが .on() を呼び出す時点でページに存在している必要があります。

onまたはの使用法はlive、目的によって異なります。

于 2012-08-21T13:19:32.567 に答える
1

これを試して:

    $(document).ready(function() {
        $('img.deleteRecord').on("click", function() {
            if ( confirm("Are you sure?") ) {
                $(this).closest('tr').fadeOut();
            }
        });
    });

.live().on()jQuery 1.7 以降では推奨されていません。

また、クラス名だけで検索するのは良くないので、できれば上記のようなセレクターを使ってください。

編集

行が動的に追加される場合は、次を使用する必要があります。

    $(document).ready(function() {
        $('#parent').on("click", "img.deleteRecord", function() {
            if ( confirm("Are you sure?") ) {
                $(this).closest('tr').fadeOut();
            }
        });
    });
于 2012-08-21T13:19:26.917 に答える
-1

説明:セレクターに一致する最初の要素を取得します。現在の要素から始まり、DOM ツリーを上に向かって進みます。

現在の要素から開始する 提供されたセレクターに一致するものが見つかるまで DOM ツリーを上に移動する 返される jQuery オブジェクトには、ゼロまたは 1 つの要素が含まれる

ソース: http://api.jquery.com/closest/

編集

ドキュメントを完全に理解したら、Firebug コンソールでコードを試してください。Frist、これを試してください:

$('.deleteRecord').eq(0).closest('tr').fadeOut();

機能する場合は、この onlick 関数を別の要素に追加して、機能するかどうかを確認してください。

最後の手段として、confirm() を試してください。

于 2012-08-21T13:24:19.133 に答える