Domanda

Ho provato a capire come aggiungere l'attributo "controllato" a una casella di controllo su Click. Il motivo per cui voglio farlo è così se guardo una casella di controllo; Posso avere la mia memoria locale, salvarlo come HTML, quindi quando la pagina si aggiorna si nota che la casella di controllo viene controllata. A partire da ora se lo controllo, svanisce il genitore, ma se salvo e ricarico rimane sbiadito ma la casella di controllo è deselezionata.

Ho provato a fare $ (questo) .atr ('controllato'); Ma non sembra voler aggiungere controllato.

EDIT: dopo aver letto i commenti sembra che non sia stato chiaro. Il mio tag di input predefinito è:

<input type="checkbox" class="done">

Ho bisogno che sia in alto, quindi quando faccio clic sulla casella di controllo, aggiunge "controllato" fino alla fine. Ex:

<input type="checkbox" class="done" checked>

Ho bisogno che lo faccia, quindi quando salvo l'HTML nella memoria locale, quando si carica, rende la casella di controllo come selezionato.

$(".done").live("click", function(){
if($(this).parent().find('.editor').is(':visible') ) {
var editvar = $(this).parent().find('input[name="tester"]').val();
$(this).parent().find('.editor').fadeOut('slow');
$(this).parent().find('.content').text(editvar);
$(this).parent().find('.content').fadeIn('slow');
}
if ($(this).is(':checked')) {
$(this).parent().fadeTo('slow', 0.5);
$(this).attr('checked'); //This line
}else{

$(this).parent().fadeTo('slow', 1);
$(this).removeAttr('checked');
}
});
È stato utile?

Soluzione

Sembra che questa sia una delle rare occasioni in cui l'uso di un attributo è effettivamente appropriato. jQuery's attr() Il metodo non ti aiuterà perché nella maggior parte dei casi (incluso questo) stabilisce effettivamente una proprietà, non un attributo, facendo sembrare la scelta del suo nome in qualche modo sciocco. Aggiornamento: da JQuery 1.6.1, La situazione è leggermente cambiata]

IE ha dei problemi con il DOM setAttribute metodo ma in questo caso dovrebbe andare bene:

this.setAttribute("checked", "checked");

In IE, questo effettivamente effettivamente verificato la casella di controllo. In altri browser, se l'utente ha già controllato e deselezionato la casella di controllo, l'impostazione dell'attributo non avrà alcun effetto visibile. Pertanto, se si desidera garantire il controllo della casella di controllo oltre ad avere il checked attributo, è necessario impostare il checked Proprietà anche:

this.setAttribute("checked", "checked");
this.checked = true;

Per deselezionare la casella di controllo e rimuovere l'attributo, fai quanto segue:

this.setAttribute("checked", ""); // For IE
this.removeAttribute("checked"); // For other browsers
this.checked = false;

Altri suggerimenti

$( this ).attr( 'checked', 'checked' )

Appena attr( 'checked' ) restituirà il valore dell'attributo controllato di $ (questo). Per impostarlo, hai bisogno di quel secondo argomento. Basato su <input type="checkbox" checked="checked" />

Modificare:

Sulla base dei commenti, una manipolazione più appropriata sarebbe:

$( this ).attr( 'checked', true )

E un metodo JavaScript diretto, più appropriato ed efficiente:

this.checked = true;

Grazie @Andy e per quello.

Se .attr() non funziona per te (soprattutto quando si controllano e deglutire le scatole in successione), usa .prop() invece di .attr().

Usa questo codice

var sid = $(this);
sid.attr('checked','checked');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top