2016-08-01 4 views
-1
$(document).ready(function(){ 
$('#switcher-default').addClass('selected'); 
$('#switcher button').on('click', function(){ 

    var bodyClass = this.id.split('-')[1]; 

    $('body').removeClass().addClass(bodyClass); 
    $('#switcher button').removeClass('selected'); 
    $(this).addClass('selected'); 
    console.log(bodyClass); 
}); 
}); 

//////////////Html Code///////////// 

<div id="switcher" class="switcher"> 
    <h3>Style Switcher</h3> 
    <button id="switcher-default"> 
     Default 
    </button> 
    <button id="switcher-narrow"> 
     Narrow Column 
    </button> 
    <button id="switcher-large"> 
     Large Print 
    </button> 
</div> 

Dieser Code funktioniert und ich kann sehen, was es auch tut, aber die 1 in den eckigen Klammern verwirrt mich. Bedeutet es, die ID zu teilen, wo "-" verwendet wird, und den ersten Teil zu nehmen? Ich weiß es nicht wirklich? Würde die Hilfe anpreisen.Kann mir jemand erklären, was die eckigen Klammern hier in diesem jQuery Code machen?

+4

'split()' gibt ein Array von * n * Elementen zurück, '[i]' greift auf das 'i'te Element dieses Arrays zu. –

+0

Nur als Randnotiz, ID sollte niemals irgendwelche Daten bringen. Sie haben das Attribut "data-*" dafür. All das zu sagen, dieser Code ist schlecht –

+0

@ A.Wolff: Ich würde nicht sagen "nie." Wenn Sie aus anderen Gründen eine ID für Ihr Element benötigen und Sie auch den eindeutigen Bezeichner von etwas kennen müssen, das dieses Element repräsentiert (wie ein Blogkommentar), sehe ich keinerlei Problem damit, diesen ID Teil der ID zu machen (wie in den Kommentaren in [dieser MSDN-Blogpost] (https://blogs.msdn.microsoft.com/vcblog/2014/06/03/visual-studio-14-ctp/#div-comment-77733)). –

Antwort

0

Es bedeutet, dass Sie die durch this.id identifizierte Zeichenfolge teilen, die zu einem Array führt. Sie verwenden den Wert mit Index 1 aus diesem Array, um die Variable bodyClass festzulegen.

Beachten Sie, dass in vielen Einstellungen, wenn Sie nicht derjenige sind, der alle Daten generiert, es unsicher sein kann, anzunehmen, dass das resultierende Array immer eine bestimmte Anzahl von Elementen hat.

0

Das Ergebnis von this.id.split('-') ist ein Array. So ruft [1] das Element am Index 1.

zu entsprechen würde:

//get array of ids 
var ids = this.id.split('-'); 
//get 1st id 
var bodyClass = ids[i]; 
0

this.id könnte 'Switcher-was' this.id.split('-') ist gleich zu [ 'Schalter', 'was immer'] this.id.split('-')[1] ist nimmt das zweite Element 'was auch immer'

+0

Danke. Das hat mir geholfen, es zu verstehen. –

Verwandte Themen