2017-10-04 121 views
2

我已經爲我的問題尋找解決方案,可以找到一些方法,但是,沒有一個按預期工作。所以,這是我嘗試瞭解jQuery切換功能。我希望你可以幫助我!jQuery先切換文本隱藏文本

  1. 問題:我想隱藏文本並在點擊按鈕/鏈接後使其可見。
  2. 解決方案:切換功能。不幸的是,這會首先顯示文本並在點擊按鈕/鏈接後隱藏它。代碼:所以,我從一個較舊的帖子中找到了這段代碼(對不起,我找不到作者,如果是你的話 - 請給我發短信,我會正確地評價你)。

腳本:

function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    e.style.display = ((e.style.display!='none') ? 'none' : 'block'); 
} 

document.getElementById('showDiv').onclick=function(){ 
    // Remove any element-specific value, falling back to stylesheets 
    document.getElementById('element').style.display=''; 
}; 

在我的HTML身體部分我用下面的代碼:描述

<a onclick="toggle_visibility('private');"> 
    <b>» Private Enquity/Venture Capital</b> 
</a> 
<div id="private"> 
    <p>In arcu accumsan arcu adipiscing accumsan orci ac. Felis id enim aliquet. Accumsan ac integer lobortis commodo ornare aliquet accumsan erat tempus amet porttitor. Ante commodo blandit adipiscing integer semper orci eget. Faucibus commodo adipiscing mi eu nullam accumsan morbi arcu ornare odio mi adipiscing nascetur lacus ac interdum morbi accumsan vis mi accumsan ac praesent.</p> 
</div> 

的切換功能的工作原理,但我怎樣才能使內部隱藏的文本,直到鏈接是點擊? 我對此很感興趣,並感謝您的幫助。

謝謝!

回答

2

要使元素隱藏默認情況下使用CSS:display: none。您也可以用一個不顯眼的事件處理程序代碼的工作(這是優於過時on*事件屬性)和jQuery的toggle()方法,像這樣:

$(function() { 
 
    $('.toggle').click(function(e) { 
 
    e.preventDefault(); 
 
    $(this).next('.private').toggle(); 
 
    }); 
 
});
.private { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#" class="toggle"><b>» Private Enquity/Venture Capital</b></a> 
 
<div class="private"> 
 
    <p>In arcu accumsan arcu adipiscing accumsan orci ac. Felis id enim aliquet. Accumsan ac integer lobortis commodo ornare aliquet accumsan erat tempus amet porttitor. Ante commodo blandit adipiscing integer semper orci eget. Faucibus commodo adipiscing mi eu nullam accumsan morbi arcu ornare odio mi adipiscing nascetur lacus ac interdum morbi accumsan vis mi accumsan ac praesent.</p> 
 
</div>

注意,我改變了idclass,因爲這種機制經常在整個頁面上重複,這將導致重複id屬性,這是無效的HTML。

+0

是不是對事件附加到ID而不是階級好的做法呢? 因爲,如果開發人員在其他地方使用同一個類「.toogle」,則將單擊事件附加到它。 –

+0

@TavishAggarwal不,完全沒有。他們有完全不同的用例。在你提到的情況下,你應該讓選擇器更加準確,例如。 '$('#container .parent a.toggle')。click(...' –

+0

ok ..是的正確。 –

0

希望得到這個幫助!

function toggle_visibility(id) { 
 
    var e = document.getElementById(id); 
 
    //e.style.display = ((e.style.display!='none') ? 'none' : 'block'); 
 
    } 
 
       
 
    document.getElementById('showDiv').onclick=function(){ 
 
     // Remove any element-specific value, falling back to stylesheets 
 
     $('#element').toggleClass('display'); 
 
     // $('#element2').toggleClass('display'); 
 
    };
.display { 
 
display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a href="#" onclick="toggle_visibility('private');"> 
 
     <b id="showDiv">» Private Enquity/Venture Capital</b> 
 
</a> 
 

 
<p id="element" class="display">In arcu accumsan arcu adipiscing accumsan orci ac. Felis id enim aliquet. Accumsan ac integer lobortis commodo ornare aliquet accumsan erat tempus amet porttitor. Ante commodo blandit adipiscing integer semper orci eget. Faucibus commodo adipiscing mi eu nullam accumsan morbi arcu ornare odio mi adipiscing nascetur lacus ac interdum morbi accumsan vis mi accumsan ac praesent.</p>

+0

嗨,謝謝你的快速回答! 如果我只使用一個元素,這種方法可行,但我的頁面上有更多的內容。 如果我還想隱藏其他文本,我該如何工作? –

+0

@ygmrydgn l編輯了我的答案,您可以添加行$('#element2')。toggleClass('display');其中#element2是您想要隱藏的其他div ID。 –

+0

我使用rory-mccrossan的上述解決方案,這似乎是我的一個簡單修復程序解。感謝你的付出! –

0

$(document).ready(function(){ 
 
$("a").click(function(){ 
 
$("#private").toggle(); 
 
}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#"> 
 
    <b>» Private Enquity/Venture Capital</b> 
 
</a> 
 
<div id="private"> 
 
    <p>In arcu accumsan arcu adipiscing accumsan orci ac. Felis id enim aliquet. Accumsan ac integer lobortis commodo ornare aliquet accumsan erat tempus amet porttitor. Ante commodo blandit adipiscing integer semper orci eget. Faucibus commodo adipiscing mi eu nullam accumsan morbi arcu ornare odio mi adipiscing nascetur lacus ac interdum morbi accumsan vis mi accumsan ac praesent.</p> 
 
</div>

+0

嗨,謝謝你的回答。不幸的是,這個工作就像我的代碼示例一樣。它首先顯示文本並在點擊後隱藏。我需要逆轉。 –