我正在构建我的投资组合,我想创建一个库来显示我的项目 . 我有七个div的选择,其中包含构成我网站的标签式导航区域的内容 . 与其他选项卡式导航一样,任何时候只有一个包含内容的div处于活动状态 . 但是,与其他选项卡式导航不同,这个导航由PHP控制 . 如果某些内容(当前设置为file_exists函数但很快将由MySQL控制)可用,则div将被写入导航并显示相应的链接 . 如果不是,则链接将被隐藏,并且不会写入div . 所需的文件基于$ _GET调用,所需的文件因我的$ _GET变量中的字符串而异 .
每个标签都有一个唯一的ID . 目前(因为我不是Javascript专家),我有一个“重置”选项,在将我选择的div置于“可见”状态之前,将所有命名div的样式设置为“隐藏”样式 .
如果有可能,我想做的是:
我想从#div1到#div2 . Div 1,2,4和6(对于此示例)处于活动状态 . 我点击告诉我的页面显示#div2的链接(该函数目前只说隐藏所有div然后显示#div2,所有其他div的隐藏是一个单独的函数,在此函数中调用) . #div1目前可见 .
-
#div1将淡出
-
#div2将淡入
4和6分区不会受到影响 . 不会触及Div 3,5和7,因为它们(就我的页面而言)不存在 . 对于此示例,每个淡入淡出可能需要3秒 .
我隐约知道$('#div2') . fadeIn(3000);对#div2构成淡入效果,而fadeOut()对应则构成淡出 . 我如何使用jQuery(我的网站上有1.5.2)淡出#div1 out和fade#div2 in WITHOUT影响任何其他div,或者更容易保存代码,因为它隐藏了所有我的div和只是淡出#div2 in?请记住,我不是Javascript专家,我只是初学者,所以请不要侮辱我的脚本长度或无法理解我认为会如此简单的事情 .
请记住,我的导航中最多有七个div . 脚本必须根据点击的链接找到可见的div并将其淡出,然后淡入我选择的div,并且它不得触及任何剩余的div .
这很容易理解并获得答案吗?
编辑@ 01:46 GMT,30/04/2010
谢谢,但这些看起来不像我想要的 . 如果只有两个div,它们看起来会起作用,但请记住,最多有七个,并且链接应该知道哪个div是可见的,哪些不被占用 .
我目前有我的PHP脚本说“如果这个文件存在,那么制作这个div并将样式'visibleTab'应用到它 . 否则,制作它,但将样式'hiddenTab'应用于它 . ”我的Javascript(现在是jQuery)代码如下:
function resetTabs() {
$("#postersandprint").removeClass("tabs visibleTab").removeClass("hiddenTab").addClass("hiddenTab");
$("#mobileapp").removeClass("tabs visibleTab").removeClass("hiddenTab").addClass("hiddenTab");
$("#stylesheets").removeClass("tabs visibleTab").removeClass("hiddenTab").addClass("hiddenTab");
$("#storyboards").removeClass("tabs visibleTab").removeClass("hiddenTab").addClass("hiddenTab");
$("#motionpieces").removeClass("tabs visibleTab").removeClass("hiddenTab").addClass("hiddenTab");
$("#interactives").removeClass("tabs visibleTab").removeClass("hiddenTab").addClass("hiddenTab");
$("#developmentwork").removeClass("tabs visibleTab").removeClass("hiddenTab").addClass("hiddenTab");
}
function showTab(tabname) {
resetTabs();
$('#'+tabname).fadeIn(3000);
$("#"+tabname).removeClass("hiddenTab").addClass("tabs visibleTab");
}
原则是这样的:
我的链接有一个调用我的showTab函数的onclick,并在函数中放置了相应的div id,例如:
<a href="javascript:;" onclick="showTab('mobileapp');">Link</a>
该函数隐藏所有div,然后在'tabname'调用的div中淡入,在本例中为“mobileapp” .
我已经告诉每个重置函数删除任何名为'hiddenTab'的类以及任何名为'visibleTab'和'tabs'的类,然后将'hiddenTab'类添加为一种“故障安全”方法 . 我还告诉我的showTab函数,从我想要显示的选项卡中显式删除“hiddenTab”类,并添加类“tabs”和“visibleTab” . 我忘了为什么我有两种款式,但我相信原因会来找我 .
我希望我的jQuery脚本知道哪个div是可见的,哪个不是七个选择 . #div1和#div2是一个例子,但它可以是选择中的任何div . 之前,当我使用document.getElementById函数时,它工作得很好,我只想在脚本上添加淡入淡出以使其看起来更好 . 现在,它可以工作,但只有当我循环通过div一次 . 之后,它只是将我的div添加到可见的div下面,它不会隐藏它们 . 我知道我错过了什么,或者我搞砸了某个地方,但是我错过了什么?我搞砸了哪里?
5 回答
虽然没有设置在选项卡中,但希望这个例子会对你有所帮助 . [编辑,现在共添加4个div,等待动画完成后点击下一个按钮]
基本上它在容器div中搜索使用:visible selector可见的元素
.eq(0)
表示只抓取选择器返回的集合中的第一个可见元素 . 如果没有可见元素,则只选择第一个元素 .然后它选择要显示的ID .
通过以下方式同时调出两个动画:
如果你想在淡出下一个使用之前等待一个淡出,那么在其他答案中提到的回调 .
这适用于所有新的浏览器但是在IE7或更低版本上扼杀了一下 .
或者,您可以使用:hidden获取隐藏元素的集合
如果你想要一个更直接的例子,你可以发布你的html,这样我们就可以帮助你选择最合适的选择器 .
也许这就是你想要的?
当您调用任何jQuery效果函数时,其中一个参数是一个回调函数,在动画完成时调用该函数 . 你只需要做这样的事情
这是一个散步
这表示当id为“div1”的div将面向1000毫秒(1秒)并且在它将调用该函数之后 .
这简直让你的新想法淡出 after ,另一个已经完全消失了 .
只需关闭我们打开的所有内容 .
我觉得你担心的是那个
将淡出页面上的所有div,但是添加一个哈希标记和一个id你可以识别一个特定的一个我的id就像
"#div1"
此外,您使用id属性设置它:
我找到了这个jShowOff:Erik Kallevig的jQuery Content Rotator插件 - http://bit.ly/NgLRdb给它看看,看起来非常实用....
目前正试图将其作为我的joomla网站上的模块
这段代码将作为按钮点击工作,淡出div1然后慢慢淡入另一个div作为div2 .