jquery在点击时隐藏最近的行

时间:2012-08-21 13:16:00

标签: jquery ruby-on-rails haml

我曾经能够使用以下代码在用户点击删除时隐藏一行,原因是这已停止工作

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

haml line

\#{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);



});

3 个答案:

答案 0 :(得分: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();
            }
        });
    });

答案 1 :(得分: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()的页面上。

onlive的使用取决于您的目的。

答案 2 :(得分:-1)

描述:获取与选择器匹配的第一个元素,从当前元素开始并逐步向上遍历DOM树。

开始使用当前元素 向上移动DOM树,直到找到所提供选择器的匹配项 返回的jQuery对象包含零个或一个元素

来源:http://api.jquery.com/closest/

修改

如果您完全理解文档,请使用Firebug控制台尝试使用代码。 先生,试试这个:

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

如果有效,请尝试将此onlick功能添加到另一个元素,以查看它是否适用于它。

最后尝试使用confirm()。