2016-12-16 6 views
-1

그래서 저는 메뉴에서 "li 's"를 생성하는 foreach를 사용하고 있습니다. 현재 단 두 개의 "li"이 있습니다. 이 메뉴는 버튼을 클릭 할 때 더 얇아지고 이런 일이 발생하면 글꼴 크기를 줄이려고합니다.Jquery each toggleClass

각() 함수 내에서 toggleClass() 함수를 사용하여 시도했지만 첫 번째 "li"만 클래스를 토글합니다. 두 번째는 동일한 것입니다.

foreach ($results as $result){ 
         $local = $result['local']; 
        echo "<li><a class='clsPostData1' data-local='".$result['local']."' data-salaid='".$result['salaid']."' data-salakey='".$result['salakey']."'href='#'><span id='idfontsala'>".$local."</span></a></li>"; 
        } 

범위 내에서 "idfontsala"ID를 사용하고 있습니다.

<script> 

     $(document).ready(function(){ 
    $('.sidebar-toggle').click(function(){ 
    $('#idfontsala').each(function(){ 
     $(this).toggleClass('classfontsala'); 
    }); 
    }); 
}); 

    </script> 

이 일어나고있는 것입니다 : 당신이 원하는 경우에 생성 된 모든 항목 https://i.imgsafe.org/34d4f934b5.png

+0

$ .each 메서드에 id를 사용하고있는 것으로 나타났습니다. 연습으로 html id가 고유하므로 문제가 될 수 있습니다. 마크 업을 보시겠습니까? –

+0

신경 쓰지 마세요, 당신의 이드를 찾았습니다. id 대신 클래스를 사용해보십시오. –

+4

'.each()'를 사용할 필요가 없습니다. '$ ('selector'). toggleClass ('classname')'을 사용하면 그것들 모두를 토글합니다. 그러나 @ PeterClark가 말했듯이 여러 요소를 일치시키기 위해서는 ID가 아닌 클래스를 사용해야합니다. – Barmar

답변

0

영향을받을 수 있습니다. 클래스를 사용하여 여러 요소를 일치시킵니다. 당신의 마크 업을 교체 :

$('.fontsala').each(function(){ 
    $(this).toggleClass('classfontsala'); 
}); 

UPDATE :와

<span class='fontsala'> 

그리고 스크립트를 여전히 $ .each를 사용하려면

이입니다. 그러나 @Barmar가 말했듯이, 그것은 단축 될 수있다.

$('.fontsala').toggleClass('classfontsala');