Mit JSON-Daten von Ajax-Erfolg Ereignis erhielt ich diese Daten verwenden, dynamische HTML-Materialien zu machen, so etwas wie dieses
function loop_json(data) {
var response_data = jQuery.parseJSON(data);
var vip_userId = $('#userId').val();
$(response_data.vip_poll).each(function(index, value) {
var t= '';
t += '<li class="vip-polls-holder" id="'+value.id+'">';
t += '<div class="user-img">';
t += '<a href="users.php?user_name='+response_data.vip_pollOwners[index].user_name+'"><img src="'+response_data.vip_pollOwners[index].user_avatar+'" class="user-img-pic img-circle" /></a>';
t += '</div>';
...
t +='</li>';
$('.vip-polls-holder-ul-mainDIV').append(t);
// And so I attach some functions with these li boxes such as
function1();
function2(); //and
VIP_dNd_multiple();
});
}
Wo VIP_dNd_multiple() ist ->
function VIP_dNd_multiple() {
// let it be called part a
$trashVIP.each(function() {
$(this).droppable({
accept: "#VIPgalleryMulitple"+$(this).attr('id')+" > li",
activeClass: "ui-state-highlight",
drop: function (event, ui) {
console.log('abc'); //This prints one time
}
});
});
// let it be called part b
$("ul.VIPgalleryMulitple > li").each(function() {
var $item = $(this);
$item.click(function (event) {
event.preventDefault();
console.log('ok'); //This prints multiple times
});
});
}
Das Problem ist VIP_dNd_multiple() wird so oft genannt, da es li Elemente auf DOM vorhanden sind und somit Konsole gibt ‚ok‘ (Teil b der Funktion) als Ausgangs mehrere Male, was unerwünscht ist, Na sicher. Ich verstehe nicht, wenn ich Click-Ereignis auf $ (this) li verwenden, warum alle li-Elemente console.log Aktion auslösen?
Überraschenderweise gibt Teil a der gleichen Funktion Konsole nur einmal korrekt aus.
Es funktionierte. Könnten Sie bitte erklären, was Sie getan haben? –
Nun, ich weiß es nicht wirklich, ich hatte dieses Problem vor einigen Jahren, ich fand auf SO dieses Stück Code, seit diesem Moment immer dieses verwenden. Es verhindert Mehrfachereignisse, wenn Sie häufig auf demselben ElementListener hinzufügen. –