我有以下功能从列表jquery ajax调用中删除该项。现在我想重新加载项目,以便我使用触发器功能。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "FamilyManagerService.asmx/DeleteFreePurchasedFamily",
dataType: "json",
data: "{'FamilyId':'" + idFreeFamily + "'}",
success: function (data) {
}
}).done(function () {
if ($(".categoryList .activeFolder").length) {
$.session.set("CategoryName", $(".categoryList .activeFolder").attr('id'));
$.session.set("CategorynameView", $(".categoryList .activeFolder").text());
$(".categoryList a").trigger("click");
}
});
注意: 1.触发事件触发此'.categoryList a'选择器中的所有锚链接。 我只想开一次这个事件。
尝试包括stopPropagation,stopImmediatePropagation,PreventDefault但它会多次触发。
$('.categoryList a').click(function (e) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "FamilyManagerService.asmx/getPurchasedParameterType",
dataType: "json",
data: "{'categoryName':'" + categoryName + "', 'IsFreeFamily':'" + true + "'}",
success: function (data) {
//TODO:
}
});
e.stopPropagation();
e.stopImmediatePropagation();
return false;
});
请建议我如何才能召唤该活动一次。
答案 0 :(得分:1)
正如评论中提到的DontVoteMeDown,如果您的HTML中有几个与.categoryList a
对应的元素,那么JQuery将在每个元素上触发点击事件,并且您的函数将被调用好几次。
触发点击时,您可以尝试在JQuery选择器中更具体。 (添加一个类或ID以确保只有一个链接与您的选择器匹配)。
OR(可能是更好的解决方案)
也许你的“触发点击”方法不合适。只需通过调用函数(类似于您的点击回调)进行新调用,而无需单击。
var reloadItems = function(){
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "FamilyManagerService.asmx/getPurchasedParameterType",
dataType: "json",
data: "{'categoryName':'" + categoryName + "', 'IsFreeFamily':'" + true + "'}",
success: function (data) {
//TODO:
}
});
}
和
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "FamilyManagerService.asmx/DeleteFreePurchasedFamily",
dataType: "json",
data: "{'FamilyId':'" + idFreeFamily + "'}",
success: function (data) {
}
}).done(function () {
if ($(".categoryList .activeFolder").length) {
$.session.set("CategoryName", $(".categoryList .activeFolder").attr('id'));
$.session.set("CategorynameView", $(".categoryList .activeFolder").text());
reloadItems();
}
});
这也简化了您的事件处理(如A. Wolff评论的那样):
$('.categoryList a').click(reloadItems);