Pulsanti jQuery UI Toggle
Domanda
Sto cercando di attivare un pulsante di interfaccia utente da un callback di un'operazione POST. Il pulsante jQuery UI avrebbe neanche bisogno di avere "ui ui-icon-icon-minus" o "ui ui-icon-icon-controllato" come span.class
Ho cercato di alternare - ma alternare solo rimuove e aggiunge di nuovo una parte della classe - non scambiare l'intera classe. Questo è dove mi sono bloccato in questo momento:
$('#toggle-page, a.toggle-page').click(function() {
pageID = $(this).parent('div').attr('id');
$.post(
"webadmin/pages.toggle.serialize.php",
{id : pageID },
function(data, textStatus, xhr) {
if ($("#"+pageID+" a#toggle-page span").hasClass('ui-icon ui-icon-minus')) {
$("#"+pageID+" a#toggle-page span").removeClass('ui-icon ui-icon-minus');
$("#"+pageID+" a#toggle-page span").addClass('ui-icon ui-icon-check');
}
if ($("#"+pageID+" a#toggle-page span").hasClass('ui-icon ui-icon-check')) {
$("#"+pageID+" a#toggle-page span").removeClass('ui-icon ui-icon-check');
$("#"+pageID+" a#toggle-page span").addClass('ui-icon ui-icon-minus');
}
}
);
});
So che il codice di cui sopra non è la strada giusta ... ma qualcuno mi può puntare nella giusta direzione? L'Id ecc sono un po 'annidato perché theres più voci che possono essere modificati -. Da qui la roba pageID
Soluzione
Vorrei fare in questo modo:
$('#toggle-page, a.toggle-page').click(function() {
pageID = $(this).parent('div').attr('id');
$.post(
"webadmin/pages.toggle.serialize.php",
{id : pageID },
function(data, textStatus, xhr) {
var node = $("#"+pageID+" a#toggle-page span");
node.toggleClass('ui-icon-minus');
node.toggleClass('ui-icon-check');
}
);
});
Altri suggerimenti
Questo dovrebbe essere più vicino a ciò che si desidera. memorizzare nella cache sempre il ritorno da un selettore jQuery, se si prevede di utilizzare di nuovo:
$('#toggle-page, a.toggle-page').click(function() {
var $page = $(this).parent('div'),
pageID = $page.attr('id');
$.post(
"webadmin/pages.toggle.serialize.php",
{id : pageID },
function(data, textStatus, xhr) {
var $span = $page.find('a#toggle-page span');
if($span.hasClass('ui-icon-minus')) {
$span.removeClass('ui-icon-minus').addClass('ui-icon-check')
} else {
$span.removeClass('ui-icon-check').addClass('ui-icon-minus')
}
}
);
});