在这里,变量$ 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)。这可能是我的问题吗?我需要不同版本的不同插件我用于其他东西。有任何想法吗 ? 我完全难过了。
答案 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; 。希望它可以帮助那些人。