Jquery对某些功能没有反应

时间:2012-08-21 16:40:23

标签: jquery-ui jquery jquery-plugins jqgrid

在这里,变量$ thislistitem,下面的粗体,在我的函数中位于相同的位置。我把它分开来加粗。专注于正在创建的jquery ui按钮和点击事件。

        function activatequalifdetails($subgrid, qualId){
            $subgrid.find('.itemcontrols').hide();
            $subgrid.find("#detailedsubjects ol").on("click", "li", function(event){
                event.stopPropagation();
                        var $itemwithfoucsclass = $(".focus");
/* <![CDATA[ */         if(($itemwithfoucsclass[0] != $(this)[0]) && ($itemwithfoucsclass.length !== 0)){           /* ]]> */ 
                            $.post('<c:url value="/highschooldetailedqualifications/highschoolqualdetailedajaxupdate/"/>'+$itemwithfoucsclass.find('.itemcontrols button:nth-child(1)').attr("qualdetailid"), {grade: $itemwithfoucsclass.find('.grade').val(), yearattained: $itemwithfoucsclass.find('.yearAttained').val()});
                        }

var $ thislistitem = $(this);

        $subgrid.find('#detailedsubjects ol li').not(this).removeClass('focus').find('.itemcontrols').hide();               
        $(this).addClass("focus").find('.itemcontrols').show();

            $(this).find('.itemcontrols button:nth-child(1)').button({
                icons: {
                    primary: "ui-icon-disk"
                },
                text: false
            }).unbind('click').click(function(){
                $.post('<c:url value="/highschooldetailedqualifications/highschoolqualdetailedajaxupdate/"/>'+$(this).attr("qualdetailid"), {grade: $thislistitem.find('.grade').val(), yearattained: $thislistitem.find('.yearAttained').val()}, function(data){
                    $thislistitem.removeClass('focus').find('.itemcontrols').hide();
                });
            });

            $(this).find('.itemcontrols button:nth-child(2)').button({
                icons: {
                    primary: "ui-icon-trash"
                },
                text: false
            }).unbind('click').click(function(){
                $.get('<c:url value="/highschooldetailedqualifications/highschoolqualdetailedajaxdelete/"/>'+qualId+'/'+$(this).attr("qualdetailid"), function(data){
                    $thislistitem.remove();
                });
            });

            $(this).find('.itemcontrols button:nth-child(3)').button({
                icons: {
                    primary: "ui-icon-closethick"
                },
                text: false
            }).unbind('click').click(function(){
                $thislistitem.removeClass('focus').find('.itemcontrols').hide()
            });             
    });//apply css class on click on any given item
}

保存和删除的点击事件完美无缺。然而,取消按钮的点击事件(第3个按钮)给出了一些starnge行为。第3个按钮的点击逻辑与保存的点击逻辑相同,唯一的区别是图标,不需要帖子ID。

单击取消按钮时,没有任何反应。 如果我做

.unbind('click').click(function(){
                    $thislistitem.remove();
                });

对于第3个按钮,它可以工作。

如果我提醒一些测试文本,它可以正常工作。如果使用removeClass()则不会发生任何事情。 我尝试按原样复制和粘贴保存功能,更改图标等等,并保持ajax调用不变。这工作正常,焦点课程被删除。如果我删除了ajax调用并运行上面函数中看到的逻辑,那么没有任何反应。 Firebug什么都没报告。

我在这个页面上加载了几个版本的jquery,(1.4.3,1.4.2,1.5.1,1.6.2和1.7.2)。这可能是我的问题吗?我需要不同版本的不同插件我用于其他东西。有任何想法吗 ? 我完全难过了。

1 个答案:

答案 0 :(得分:0)

好的,这就是我必须要做的事情,看起来像是一个非常非常基础的错误。

            $(this).find('.itemcontrols button:nth-child(3)').button({
                icons: {
                    primary: "ui-icon-closethick"
                },
                text: false
            }).unbind('click').click(function(){
                $thislistitem.removeClass('focus').find('.itemcontrols').hide();
                return false;
            });

我需要做的就是在逻辑之后添加 return false; 。希望它可以帮助那些人。