Non riesco a 'return false' per mantenere .Live () da ripetere codice di propagazione
Domanda
Voglio che questo sia impostato in modo che quando un certo corpo del testo viene cliccato, un campo di testo si apre, e l'utente può inserire i dati nel campo, allora o fare clic su un 'salva' o il tasto 'cancella' e sia inviarlo a database o reimpostare il valore, rispettivamente. Tuttavia, nonostante l'utilizzo di 'return false', non riesco neppure a tenere questo codice di attivare ripetutamente.
Ho usato die () e che funziona, ma voglio anche essere in grado di reinstanziare l'evento click originale dopo che l'utente sia salva o annulla, e non riesco a pensare ad un modo per fare quel lavoro. Grazie in anticipo per l'aiuto.
$('td[name]').live("click", function() {
nameof = $(this).attr("name");
idof = $(this).attr("id");
valueof = $(this).html();
$(this).html('<input type="text" name="' + nameof + '" value="' + valueof + '"><input type="hidden" name="id" value="' + idof + '"><span id="save">save</span>   <span id="cancel">cancel</span>');
return false;
});
Aggiornamento:
Ecco cosa ho finalmente si avvicinò con (include tutto il codice edit-in-place):
$('td[name="grouping"] span, td[name="title"] span').live('click', function() {
nameof = $(this).parent().attr("name");
idof = $(this).parent().attr("id");
valueof = $(this).html();
if($("table td>span").children('input').length > 0) {}
else {
if($(this).children().length > 0) {}
else {
$(this).html('<input type="text" name="' + nameof + '" value="' + valueof + '"><input type="hidden" name="id" value="' + idof + '"><input type="hidden" name="originalinput" value="' + valueof + '"><span class="save">save</span> <span class="cancel">cancel</span>');
}
}
});
$('.cancel').live('click', function() {
$(this).parent().html($(this).siblings('input[name="originalinput"]').attr("value"));
});
$('.save').live('click', function() {
savevalue = $(this).siblings('input[type="text"]').attr("value");
saveid = $(this).siblings('input[name="id"]').attr("value");
savecolumn = $(this).siblings('input[type="text"]').attr("name");
$.ajax({
type: "POST",
url: "../php/adminajax.php",
data: 'id=' + saveid + '&' + savecolumn + '=' + savevalue
});
$(this).parent().html(savevalue);
});
$('#saving').ajaxStart( function() {
$(this).fadeIn(100);
});
$('#saving').ajaxStop( function() {
$(this).fadeOut(2000);
});
Sono sicuro che è molto più disordinato di qualsiasi cosa avrei potuto scaricato, ma almeno so che le basi di un AJAX edit-in-place ora. Grazie per l'aiuto, tutti.
Soluzione
Sembra che si sta essenzialmente cercando di fare un accordo edit-in-place. Il problema si sta eseguendo in è che clic dell'utente viene propagata attraverso la casella di testo / estende di nuovo esso è contenitore principale, innescando così ancora una volta l'evento click. È necessario filtrare in modo che non seleziona TD che hanno l'ingresso all'interno del suo contenuto. Qualcosa sulla falsariga di questo:
$('td[name]:not(td>input)').live(...);
Anche se non è una risposta diretta a quello che stai cercando perché non utilizzare un plugin esistente come uno trovato qui ?