0
要素をドラッグして別のコンテナにドロップするjQueryプラグインがあります。例えば、要素がコンテナの上にある場合など、いくつかのイベントをアタッチしたいと思います。これらの出来事は完全に機能していましたが、その後は機能しなくなりました。いくつかの理由で、選択可能な特定のイベントは発生しませんが、たとえば、クリックするとバインドされます。jQueryの選択可能なイベント
例:
//these are not working
$('#sortable2').bind("sortover", function(event, ui) {
alert("here");
});
$('#sortable2').bind('sortreceive', function() {
alert('User clicked on "sortable2."');
});
$('.droptrue').bind("sortout", function(event, ui) {
$(this).css("background", "transparent");
});
関連するコードは次のとおりです。
var selectedClass = 'ui-state-highlight',
clickDelay = 300, // click time (milliseconds)
lastClick, diffClick; // timestamps
$("ul.droptrue li")
// Script to deferentiate a click from a mousedown for drag event
.bind('mousedown mouseup', function(e){
if (e.type=="mousedown") {
lastClick = e.timeStamp; // get mousedown time
} else {
diffClick = e.timeStamp - lastClick;
if (diffClick < clickDelay) {
// add selected class to group draggable objects
$(this).toggleClass(selectedClass);
}
}
})
.draggable({
revertDuration: 10, // grouped items animate separately, so leave this number low
containment: '.multiSelect',
start: function(e, ui) {
ui.helper.addClass(selectedClass);
},
stop: function(e, ui) {
// reset group positions
$('.' + selectedClass).css({ top:0, left:0 });
},
drag: function(e, ui) {
// set selected group position to main dragged object
// this works because the position is relative to the starting position
$('.' + selectedClass).css({
top : ui.position.top,
left: ui.position.left
});
}
});
$("ul.droptrue")
.sortable()
.droppable({
drop: function(e, ui) {
$('.' + selectedClass)
.appendTo($(this))
.add(ui.draggable) // ui.draggable is appended by the script, so add it after
.removeClass(selectedClass)
.css({ top:0, left:0 });
}
});
$('#total').text(autoCompleteSourceArray.length);
$('#filter-count').text(autoCompleteSourceArray.length);
//Adding Filtering functionality for the lists
$("#filter").keyup(function() {
var filter = $(this).val(), count = 0;
$("ul.droptrue:first li").each(function() {
if ($(this).text().search(new RegExp(filter, "i")) < 0) {
$(this).addClass("hidden");
} else {
$(this).removeClass("hidden");
count++;
}
});
$("#filter-count").text(count);
});
// bind events in order to show or hide the message in the drop zones
$('ul[id^="sortable"]').live("sortover", function(event, ui) {
$(this).css("background", "#f7f6d7");
});
$('ul[id^="sortable"]').live("sortout", function(event, ui) {
$(this).css("background", "transparent");
});
どうもありがとう
何かエラーがありますか?またはただ単に働いていない...もし彼らが働いていなければ、彼らが付けられていないか、または後で取り除かれるイベントによって、それが働かなくなったかもしれません。あなたの 'console'ウィンドウにそのコードを貼り付けてみてください。それがうまくいくかどうかを確認してください。 – Val
コンソールからすべて実行してもエラーは表示されませんが、イベントはバインドされません。何らかの理由で実行されていません – AhmadAssaf
"内部のボディ"はアラートを意味しますか?もしそうなら、それは縛られていないので理にかなっています、なぜ彼らは:)、あなたはjsfiddleを使うことができますか?より多くのコードを表示するにはどうすればいいのでしょうか?ここでは時間がかかるかもしれませんが、実際はlive()関数を使うべきです。 – Val