Schede dell'interfaccia utente jQuery: come posso rimuovere l'elemento dell'elenco delle schede se il pannello dei contenuti corrispondente è vuoto?

StackOverflow https://stackoverflow.com/questions/5383755

Domanda

Sto utilizzando la configurazione di base delle schede dell'interfaccia utente jQuery con un sistema cms e mi chiedevo se posso nascondere una scheda di navigazione se il pannello del contenuto con l'ID corrispondente è vuoto.

HTML

<div id="tabs">
    <ul>
        <li><a href="#tabs-1">Nunc tincidunt</a></li>
        <li><a href="#tabs-2">Proin dolor</a></li>
        <li><a href="#tabs-3">Aenean lacinia</a></li>
    </ul>
    <div id="tabs-1">
        <p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>
    </div>
    <div id="tabs-2">
        <p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>
    </div>
    <div id="tabs-3">

    </div>

JavaScript

$(function() {
    $( "#tabs" ).tabs();
});

Aiuto apprezzato :)

È stato utile?

Soluzione

Se si desidera rimuovere tutte le schede vuote, è possibile utilizzare questo codice:

$(function() {
    var $tabs = $( "#tabs" );
    $tabs.tabs();
    var offst = 0;
    $('#tabs > div').each(function(index, elem) {
        if ($(elem).html().trim() === '') {
            $tabs.tabs( "remove" , index - offst);
            offst++;
        }
    });
});

Ecco Un esempio su jsfiddle

Appunti:

  • Il motivo del offst La variabile è perché, se si rimuove una scheda, gli indici cambieranno.
  • Questo cade l'elemento delle schede in $tabs Quindi non deve chiamare il selettore più volte.
  • Questo utilizza il corretto remove funzione delle schede dell'interfaccia utente jQuery.

Altri suggerimenti

Puoi trovare il codice su questo link:

http://jsfiddle.net/sjkye/

Saluti.

Prova questo

if ($('#tabs-3').is(':empty')) {
    var tabId = $(this).attr('id');
    $('a[href$="'+tabId+'"]').parent().remove();
}

Per un dato ID di scheda questo dovrebbe rimuovere l'elemento genitore (e tutto ciò che contiene) di un'ancora che ha un href corrispondente.

Modificare:tra l'altro, il tuo terzo div non corrisponderà alla condizione ':empty' a meno che non sia realmente vuoto, ad es.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top