2017-10-04 127 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

嗨,谢谢你的回答。不幸的是,这个工作就像我的代码示例一样。它首先显示文本并在点击后隐藏。我需要逆转。 –