现状:
我使用的是wenzhixin JQuery Multiple-Select-Plugin来提供一个多选下拉框(参见http://multiple-select.wenzhixin.net.cn/home/)。我在我的页面上有两个Multiselect-Dropdownbox实例(我在JSFiddle中使它类似 - 但它似乎工作......)。
问题:
我无法在我的.done()中获取onClick-Listener - 两个AJAX调用的方法可以工作。在下面的示例中,单击() - 事件
$('#cbTailoringCategory').multipleSelect( { onClick: function() {...} })
不工作,但它将选择字段变为多选下拉列表。但是当我写下change() - 这样的监听器(但是这会激发两次)时它会起作用:
$('#cbRoles').change(function (event) {
refreshDiagramNodes();
}).multipleSelect({
});
题
我如何获得click() - 事件到世界,我不必使用change() - 方法?
的jsfiddle
我试图在JsFiddle中隔离问题,但在这里工作: - /
https://jsfiddle.net/schludi/6z0ns475/
在我的代码中使用AJAX-Calls进行全面的...当...完成... jquery:
我的代码的原始AJAX调用如下:
var myTailoringCategories = {};
var myKeypointResponsibles = {};
function loadTailoringCategories() {
$.when(
$.ajax({
type: "POST",
url: '/Services/DiagramService.asmx/GetTailoringCategories',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var pcpTailoringCategories = msg.d;
$.each(pcpTailoringCategories, function (index, pcpTailoringCategory) {
myTailoringCategories[pcpTailoringCategory.tailoringcategory] = pcpTailoringCategory.tailoringelements;
$('#cbTailoringGroups').append($('<option>', {
value: pcpTailoringCategory.tailoringelements,
text: pcpTailoringCategory.tailoringcategory
}));
});
},
error: function (e) {
console.log('FEHLER! ' + e.responseText);
}
}),
$.ajax({
type: "POST",
url: '/Services/DiagramService.asmx/GetKeypointResponsibles',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var keypointResponsibles = msg.d;
$.each(keypointResponsibles, function (index, keypointResponsible) {
myKeypointResponsibles[keypointResponsible] = keypointResponsible;
$('#cbRoles').append($('<option>', {
value: keypointResponsible,
text: keypointResponsible
}));
});
},
error: function (e) {
console.log('FEHLER! ' + e.responseText);
}
})
).done(function (result1, result2) {
updateCBFilter();
// Hier wird aus der Multiselect-Box eine Rollen-Liste
$('#cbRoles').change(function (event) {
refreshDiagramNodes();
}).multipleSelect({
});
// Hier wird aus der Multiselect-Box eine Tailoring-Liste
$('#cbTailoringGroups').multipleSelect({
onClick: function () {
alert('Click Event');
}
});
$('#cbTailoringGroups').multipleSelect('refresh');
//initializeTailoringCategories();
loadAllDiagramNodes(diagramType);
});
}
我发现了,那个功能
refreshDiagramNodes();
产生错误,以便Javascript引擎提前退出/终止 - 按此顺序,脚本onClick() - 事件未触发。