2012-10-18 5 views
5

Ho 2 lista che sono ordinabile (# sortable1 e # sortable2) e ho fatto 2 click() funzioni per gestire ogni ordinabile oggetto di eventi click ($("#sortable1 li").click(function(){}) e $("#sortable2 li").click(function(){})).jQuery UI ordinabile eventi click

Spostamento di 1 elemento da # ordinabile1 (ad esempio: Ordinamento1 Elemento 2) elenco a # elenco ordinabile2. Il problema è quando l'oggetto si è spostato sul # sortable2 e provo a cliccarlo, il mouseevent attivato è $("#sortable1 li").click(function(){}) non $("#sortable2 li").click(function(){}).

Qualsiasi suggerimento quindi se si sposta l'elemento da sortable1 a sortable2 e si fa clic su quell'elemento, l'elemento trigger $("#sortable2 li").click(function(){})?

DEMO: http://jsfiddle.net/yosafatade/zX3pX/12/

risposta

3

è necessario utilizzare on() vedere l'aggiornamento http://jsfiddle.net/zX3pX/13/

+0

super awesome. mille grazie a te. – yosafatade

+2

live() è deprecato - use .on() – oshikryu

+0

Se si dispone di elementi selezionabili in Sortable, aggiungere anche l'helper 'opzioni: 'clone',' nelle Opzioni ordinabili per impedire l'attivazione dell'evento click durante il trascinamento/l'ordinamento. http://stackoverflow.com/questions/947195/jquery-ui-sortable-how-can-i-cancel-the-click-event-on-an-item-thats-dragged –

0

avrei probabilmente aggiungere una classe a ogni li voce di ciò tavolo è nella Per esempio

<li class='sort1'></li> 
.

Quindi quando si controlla .click su $(".sort1") e quando si sposta l'elemento eseguito

$(this).removeClass("sort1"); 
$(this).addClass("sort2"); 
+0

Ho provato in quel modo prima, ma il problema si verifica ancora. la risposta di @DavidMichaelHarrison e CrimsonChin è la risposta appropriata. – yosafatade

2

userei .on come .delegate è stata superata. In questo modo si collega l'evento alla lista e non alla voce dell'elenco.

Utilizzare questa:

$("#sortable1").on("click", "li", function(){ 
     $("#testClickSort1").html($(this).html()); 
}); 

$("#sortable2").on("click", "li", function(){ 
     $("#testClickSort2").html($(this).html()); 
}); 

violino: http://jsfiddle.net/qkCcS/