Javascript 使用JQuery仅显示一个元素
当点击链接时,我一次只需要显示一个元素。现在我再次隐藏所有内容,然后切换单击的元素,这就是作弊。这是可行的,除非我想让一切再次消失。除了添加“全部隐藏”按钮/链接,我能做什么?我想能够再次点击链接,并隐藏它的内容 EDIT:Pseudo的代码本来可以工作,但是这里的html错误地让您相信所有链接都在一个div中。与其跟踪它们的位置,不如通过它们的ID来调用它们 以下是我目前掌握的情况:Javascript 使用JQuery仅显示一个元素,javascript,jquery,Javascript,Jquery,当点击链接时,我一次只需要显示一个元素。现在我再次隐藏所有内容,然后切换单击的元素,这就是作弊。这是可行的,除非我想让一切再次消失。除了添加“全部隐藏”按钮/链接,我能做什么?我想能够再次点击链接,并隐藏它的内容 EDIT:Pseudo的代码本来可以工作,但是这里的html错误地让您相信所有链接都在一个div中。与其跟踪它们的位置,不如通过它们的ID来调用它们 以下是我目前掌握的情况: $(document).ready(function(){ //hides everything
$(document).ready(function(){
//hides everything
$("#infocontent *").hide();
//now we show them by which they click on
$("#linkjoedhit").click(function(event){
$("#infocontent *").hide();
$("#infojoedhit").toggle();
return false;
});
$("#linkgarykhit").click(function(event){
$("#infocontent *").hide();
$("#infogarykhit").toggle();
return false;
});
});
html看起来像:
<div id="theircrappycode">
<a id="linkjoedhit" href="">Joe D</a><br/>
<a id="linkgarykhit" href="">Gary K</a>
</div>
<div id="infocontent">
<p id="infojoedhit">Information about Joe D Hitting.</p>
<p id="infogarykhit">Information about Gary K Hitting.</p>
</div
有关Joe D击球的信息
有关Gary K Hiting的信息
我们也可以把这一点提高一点:
function toggleInfoContent(id){
if($('#' + id).css('display') != 'none'){
$('#' + id).hide();
}else{
$("#infocontent *").hide();
$('#' + id).show();
}
}
$("#linkgarykhit").click(function(){
toggleInfoContent('infogarykhit');
return false;
});
$("#linkbobkhit").click(function(){
toggleInfoContent('infobobkhit');
return false;
});
我刚开始使用jQuery
,所以我不知道这是否愚蠢
function DoToggleMagic(strParagraphID) {
strDisplayed = $(strParagraphID).css("display");
$("#infocontent *").hide();
if (strDisplayed == "none")
$(strParagraphID).toggle();
}
$(document).ready(function(){
//hides everything
$("#infocontent *").hide();
//now we show them by which they click on
$("#linkjoedhit").click(function(event){
DoToggleMagic("#infojoedhit");
return false;
});
$("#linkgarykhit").click(function(event){
DoToggleMagic("#infogarykhit");
return false;
});
});
如果您的标记“命名方案”是准确的,那么可以通过使用正则表达式作为选择器避免大量重复的代码,并明智地使用jQuery的“not”
您可以将一次单击事件附加到jQuery集合,该集合应该可以执行您想要的操作,因此在添加更多Jim或John的集合时不需要添加任何JavaScript,如下所示:
$(document).ready( function () {
$("#infocontent *").hide();
$("div#theircrappycode > a").click(function(event){
var toggleId = "#" + this.id.replace(/^link/,"info");
$("#infocontent *").not(toggleId).hide();
$(toggleId).toggle();
return false;
});
});
这是一个稍微不同的方法,与伪受虐狂的代码有一些相似之处
$(document).ready(function(){
$("#infocontent *").hide();
$("#theircrappycode > a").click(statlink.togvis);
});
var statlink = {
visId: "",
togvis: function(){
$("#" + statlink.visId).toggle();
statlink.visId = $(this).attr("id").replace(/link/, "info");
$("#" + statlink.visId).toggle();
}
};
希望您也会觉得这很有用。这不总是显示出来吗,因为单击中的“this”指的是链接,而不是段落?
$(document).ready(function(){
$("#infocontent *").hide();
$("#theircrappycode > a").click(statlink.togvis);
});
var statlink = {
visId: "",
togvis: function(){
$("#" + statlink.visId).toggle();
statlink.visId = $(this).attr("id").replace(/link/, "info");
$("#" + statlink.visId).toggle();
}
};