2017-01-15 40 views
2
<div class='logolink' data-msg='msg01'>lorem ipsum</div> 
<div class='logolink' data-msg='msg02'>lorem ipsum</div> 
<div class='logolink' data-msg='msg03'>lorem ipsum</div> 

<div class='msgt' id='msg01'>lorem ipsum</div> 
<div class='msgt' id='msg02'>lorem ipsum</div> 
<div class='msgt' id='msg03'>lorem ipsum</div> 

.msgt被隱藏。
我想要什麼,例如,如果第一logolink點擊:
- 隱藏所有msgt除了msg01
- 如果msg01是可見的 - 隱藏 - 反之亦然。隱藏除一個以外的所有div並切換那一個

JS

$('.logolink').click(function(){ 
    var a = $(this).data('msg'); 
    var b = $('#' + a); 
    $('.msgt:not(b)').hide(); 
    b.toggle(); 
}); 

不工作。

回答

3

你必須使用.not功能,在此背景下,

$('.logolink').click(function(){ 
    var a = $(this).data('msg'); 
    var b = $('#' + a); 
    $('.msgt').not(b).hide(); 
    b.toggle(); 
}); 

由於b是一個jQuery對象,它不能沿着一個字符串傳遞。

+1

非常感謝,解決了。 – bonaca

+0

@bonaca很高興幫助! :) –

0
$('.logolink').click(function() { 
    var $item = $('#' + $(this).data('msg'); 
    $item.toggle(); 
    $item.siblings().hide(); 
}); 
+1

你能解釋一下這段代碼的作用嗎?它與原始代碼有什麼不同?它爲什麼解決這個問題? – JJJ

+0

對於初學者,我組合了第一步和第二步(不太重要,但爲什麼要初始化一個額外的變量)。 $ item.toggle()與前面相同。 ())將會選擇所有的兄弟姐妹(即除了目標元素以外的同一級別的div) –

+0

這很好,但**編輯答案**(在帖子下面有一個編輯鏈接)那裏的信息。 – JJJ

相關問題