Ho una funzione jQuery che commuta la visibilità del contenuto di un fieldset quando il suo legenda viene cliccato, lasciando solo il confine fieldset (se presente) e la legenda mostrando:collasso fieldset quando l'elemento legenda cliccata
$('legend.togvis').click(function() {
$(this).siblings().toggle();
return false;
});
Funziona benissimo a meno che il fieldset contenga nodi di testo.
<fieldset><legend class='togvis'>Click Me</legend>
<p>I toggle when the legend is clicked.</p>
But I'm a recalcitrant text node and refuse to toggle.
</fieldset>
Nel tentativo di alternare il testo nodi troppo Ho provato questo:
$('legend.togvis').click(function() {
$(this).parent().contents().not('legend').toggle();
return false;
});
che funziona come la prima funzione. E questo:
$('legend.togvis').click(function() {
$(this).parent().contents(":not(legend)").toggle();
return false;
});
che genera l'errore
Message: 'style.display' is null or not an object
Line: 5557
Char: 3
Code: 0
URI: http://code.jquery.com/jquery-1.4.4.js
Ogni pensiero su come ottenere i intero contenuto di un fieldset (meno la leggenda) per attivare o disattivare quando la leggenda si fa clic?
ETA Solution, con molti ringraziamenti per Eibx
$('legend.togvis').click(function() {
$(this).parent().contents().filter(
function() { return this.nodeType == 3; }).wrap('<span></span>');//wrap any stray text nodes
$(this).siblings().toggle();
});
sembra che il problema sia che i nodi di testo non hanno/non possono avere uno stile. Poiché '.toggle()' funziona influenzando il css del nodo, non può influenzare i nodi del testo. Forse ho bisogno di memorizzare il contenuto del fieldset in '.data()' e quindi rimuovere i bambini? – dnagirl