2010-08-08 4 views

Répondre

1

Si vous ne voulez pas le faire avec une variable de drapeau selon @nigative, vous pouvez faire ce qui suit avec le démarrer et arrêter les méthodes:

$("#lop").sortable({ 
    revert: '100', 
    placeholder: 'auo', 
    start: function(event, ui) { 
     ui.item[0].oldclick = ui.item[0].onclick; 
     ui.item[0].onclick = null;  
    }, 
    stop: function(event, ui) { 
     ui.item[0].onclick = ui.item[0].oldclick; 
    } 
}); 
+0

Vraiment belle solution! Merci! – Peter

+0

Cela ne fonctionnerait pas pour moi parce que comme je l'ai laissé tomber l'onclick était encore détecté. J'ai été capable de contourner ce problème en utilisant setTimeout lors de la restauration de la fonction onclick: 'setTimeout (function() {ui.item [0] .onclick = ui.item [0] .oldclick}, 500);' – vertigoelectric

3

vous pouvez utiliser start et stop Options:

$(".selector").sortable({ 
    start: function(event, ui) { ... }, 
    stop: function(event, ui) { ... } 
}); 

il suffit de créer un drapeau et la valeur true lors du tri a commencé et false lorsque le tri est terminé et dans votre fonction onclick vérifier d'abord le drapeau:

var isBeingSorted = false 

$(".selector").sortable({ 
    start: function(event, ui) { isBeingSorted = true; }, 
    stop: function(event, ui) { isBeingSorted = false; } 
}); 

function printAlert(message){ 
    if(!isBeingSorted) 
     alert(message); 
} 

Et bien sûr, votre onclicks devrait ressembler à onclick="printAlert('sdfsdf')"

Pour plus d'options regarder here

+0

Nous vous remercions de votre réponse rapide! – Peter