0

以下の太字の変数$thislistitemは、私の関数の同じ場所にあります。私はそれを太字にするために分離しました。作成されているjqueryuiボタンとクリックイベントに注目してください。

        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番目のボタン)のクリックイベントは、いくつかのスターンジ動作を与えています。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)がこの順序でロードされています。これは私の問題でしょうか?他の目的で使用しているプラ​​グインごとに異なるバージョンが必要です。何か案は ?私は完全に困惑しています。

4

1 に答える 1

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;
            });

私がする必要があるのは、returnfalseを追加することだけでした。私の論理の後。それが誰かを助けてくれることを願っています。

于 2012-08-21T20:05:30.863 に答える