以下の太字の変数$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)がこの順序でロードされています。これは私の問題でしょうか?他の目的で使用しているプラグインごとに異なるバージョンが必要です。何か案は ?私は完全に困惑しています。