2011-01-20 247 views
0

昨天晚上我发现了jQuery,它看起来非常好!我使用它来显示/隐藏div ID,点击作为触发器来显示最初隐藏在页面上的div ID。这工作得很好,我很自豪:-)jQuery隐藏/显示

但是,我有一个问题:点击一个触发器后,我希望它成为隐藏。 所以我尝试添加一行来隐藏触发器onclick,但不仅如此,现在最初隐藏的div显示在我加载页面时。

这就是我最初尝试:

$(document).ready(function() { 
$(‘#showhidetarget’).hide(); 

$(‘a#showhidetrigger’).click(function() { 
$(‘#showhidetarget’).show(200); 
**$(‘a#showhidetrigger’).hide();** 
}); 
}); 

现在有人建议,或许我不能隐藏的触发器,因为它是一个内联元素(我不知道任何事情)。他建议把触发器放在另一个div ID本身,这是有道理的。所以定义一个名为“hideafterclick”,其中包含了一个触发ID的其他DIV后,这是代码的样子:

$(document).ready(function() { 
$(‘#showhidetarget’).hide(); 

$(‘a#showhidetrigger’).click(function() { 
$(‘#showhidetarget’).show(200); 
**$(‘#hideafterclick’).hide();** 

但与同样遗憾结果:初始部分(触发)不隐藏,而应该隐藏的div立即可见onload,而它应该被隐藏。当我删除包含.hide的粗体行时,该过程完美地工作。

关于我在做什么的任何建议是错误的?或者如何解决这个问题? 只需完成:“部分”(div)包含代码和超链接。其实点击第一部分(触发器)启动一个新窗口并显示第二部分,这工作正常。只是第一部分(触发器)随后必须隐形...

谁能帮助我?

我应该使用除div外的其他东西吗?

预先感谢你的智慧和帮助,

托马斯(比利时)


亲爱Shikiryu,亲爱的DavidYell,

感谢您jsFiddles很多:我不知道关于jsFiddle,但它是惊人的,如此完整,如此清晰而又如此简单!
有时候,幸福可以在一个看似不重要的小细节中找到。因为在最后,我所做的就是做一个小的修改...
我有什么最初写在包含在href的触发部分,是这样的:

<a id="showhidetrigger" href="HYPERLINK"> blabla</a> 

并可根据您的例子,我最终改变了标签的ID的位置,所以就成了:

<a href="HYPERLINK" id="showhidetrigger">blabla</a> 

不要问我为什么,我仍然不知道有什么区别究竟,但现在它像一个魅力,这就是重要的!当然,HYPERLINK这个部分在我的情况下很长,它属于一个CFOutput,有很多标签和查询,它包含另一个javascript来打开弹出窗口中的链接等等......所以也许这就是第一个出错的地方地点。

我很高兴,感谢您的协助!

感激你的,

托马斯


大家好, 非常感谢你的答案为止! 关于撇号:我使用了通用的'ones'好吧,似乎从邮件窗口复制它时,他们改变了,但它们在代码本身中是正常的,所以问题不存在。 关于**星号:我只是简单地把它们放在指向哪里出错的部分。对不起,如果这造成了混淆,我已经明白**会使这一行大胆,我的错误。但无论如何,代码本身没有星号。 只要我不添加最后一行,它就完美地工作:onclick触发器的href打开(在新窗口中,使用JavaScript),并且(最初隐藏的)目标div变为可见。但是,当我试图隐藏一个触发器时,目标div在onload上可见,并且一个触发器不被隐藏onclick。所以然后我绑在另一个div id围绕包含触发器的代码,但结果相同。

亲爱的Davidyell,谢谢你的建议。我会试着看看它是否有效,我会让你知道。我正在处理的页面非常复杂,在ColdFusion中(我不知道ColdFusion),触发器,带有javascript弹出窗口的href等......都在CF输出中。我希望我能看到“森林里的树木”(自由翻译佛兰德语的谚语:-)

我会告诉你!

亲切的问候,

托马斯(比利时)

+0

你能显示HTML代码片段吗? – Chris 2011-01-20 09:20:06

回答

0

如果你遇到这样的问题,用Firebug火狐和,如果你有任何Javascript错误,它通常会指出你在正确的方向。尝试执行此操作以查看它显示的错误。

您还在使用而不是'",这可能会影响网页的解析。

您还好奇地看到最后一行以**开头和结尾。这可能会导致错误。

0

首先,忘记什么有人告诉过你。您可以隐藏内联和块组件。

然后,你不应该使用这些怪异,使用'"

Here's a demo

0
$('#triggerDiv').click(function() { 
    $(this).hide(); 
    $('#hiddenDiv').show(200); 
}); 

使用撇号,而不是引号。