ho queste funzioni:jQuery sovrascrivere evento .Click entro click
TargetWorksheet.toggle_child_locations = function(id){
$("#location-children-"+id).slideToggle("slow");
}
TargetWorksheet.get_child_locations = function(id, lvl){
//Ajax grab all children and targets, and display children
$.get('child_locations',{ location_id: id, level: lvl}, function(data){
$("#location-children-"+id).append(data);
TargetWorksheet.toggle_child_locations(id);
});
//Change onClick to just toggle since child data will now be loaded
$("#location-toggle-"+id).click(function(){
TargetWorksheet.toggle_child_locations(id);
});
}
e questa chiamata:
$(function(){
TargetWorksheet.toggle_child_locations(2);
$("#location-toggle-2").click(function(){
TargetWorksheet.get_child_locations(2,1);
});
});
Così ho allegare un evento click al mio link '+' (# location-ginocchiera -2), che commuta i dati figlio. Al primo clic, desidero effettuare una chiamata ajax per recuperare i dati secondari, ma poi voglio semplicemente sovrascrivere il file .click in # posizione-toggle-2 in modo che ora si attivi e non effettui la chiamata ajax . Il codice sopra non funziona, non sembra sovrascrivere il .click e fa ogni volta la chiamata ajax.
Qualcuno sa come posso sovrascrivere l'evento .click di un elemento? Ho anche provato $("#location-toggle-"+id).click(TargetWorksheet.toggle_child_locations(id));
E ha continuato a passare e ricorsivamente in modo ricorsivo per qualche motivo.
Pensieri?
Sarebbe meglio usare 'unbind (" click ");', questo non vincolerà il tipo di evento 'click'. Ciò è particolarmente utile quando si usano i widget di JQueryUI come 'button()', in questo caso si vuole semplicemente smantellare il click e mantenere altri eventi come 'hover' e così via .. –
Non dimenticare il concatenamento. Di solito faccio questo: '$ (" # myElement "). Off (" click "). On (" click ", gestore);' Questo rende il codice un po 'più pulito – Nick