Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果DIV可见,则禁用链接操作(jQuery-toggle)_Jquery_Css_Toggle - Fatal编程技术网

如果DIV可见,则禁用链接操作(jQuery-toggle)

如果DIV可见,则禁用链接操作(jQuery-toggle),jquery,css,toggle,Jquery,Css,Toggle,根据点击的链接,我使用以下命令在3个不同的div之间切换 看看这把小提琴 基本上,Link1显示DIV1,Link2显示DIV2,link3显示DIV3 我遇到的问题是: 如果用户在当前DIV已可见时单击该链接,则会删除当前DIV,并且不显示任何内容。我希望它什么也不做 我知道使它工作所需的逻辑(如果'this'div可见-什么都不做),但我不知道如何编写它 任何帮助都将不胜感激 jQuery: jQuery('.viewSchedule').click(function () {

根据点击的链接,我使用以下命令在3个不同的div之间切换

看看这把小提琴

基本上,Link1显示DIV1,Link2显示DIV2,link3显示DIV3

我遇到的问题是:

如果用户在当前DIV已可见时单击该链接,则会删除当前DIV,并且不显示任何内容。我希望它什么也不做

我知道使它工作所需的逻辑(如果'this'div可见-什么都不做),但我不知道如何编写它

任何帮助都将不胜感激

jQuery:

    jQuery('.viewSchedule').click(function () {
    var index = $(this).index(),
    newTarget = jQuery('.targetSched').eq(index);
    jQuery('.targetSched').not(newTarget).fadeOut('fast')
    newTarget.delay('fast').fadeToggle('fast')
    return false;
CSS:

   .targetSched {display: none}
   .targetSched.first {display: block}
HTML:

<a class="viewSchedule" target="1"><span class="viewBTN">WEEKLY</span></a>
<a class="viewSchedule" target="2"><span class="viewBTN">DAILY</span></a>
<a class="viewSchedule" target="3"><span class="viewBTN">LIST</span></a>


<div id="sh-week" class="targetSched first">WEEKLY CONTENT</div>
<div id="sh-daily" class="targetSched">DAILY CONTENT</div>
<div id="sh-list" class="targetSched">LIST CONTENT</div>
每周
每日的
列表
每周内容
每日内容
列表内容

你也在淡出目前的部门。只要将
fadeToggle()
更改为
fadeIn()
,因为
fadeToggle()
会隐藏当前可见的元素

查看以下代码段

jQuery('.viewSchedule').click(function () {
    var index = $(this).index(),
    newTarget = jQuery('.targetSched').eq(index);
   jQuery('.targetSched').not(newTarget).fadeOut('fast')

    newTarget.delay('fast').fadeIn('fast')       //change this line
    return false; 
})

只需替换以下代码:

newTarget.delay('fast').fadeToggle('fast');
为此:

newTarget.delay('fast').fadeIn('fast');

问题是
fadeToggle
切换元素的显示状态。因此,如果该元素已经可见,它将在第二次单击时隐藏它,并在下一次单击时再次显示,依此类推。

检查显示属性,然后执行fadeToggle

 jQuery('.viewSchedule').click(function () {
    var index = $(this).index(),
    newTarget = jQuery('.targetSched').eq(index);
if(newTarget.css("display") != "block"){ jQuery('.targetSched').not(newTarget).fadeOut('fast')
    newTarget.delay('fast').fadeToggle('fast')
                                       }
    return false;
})

啊,这么简单!非常感谢;)事实证明,这对于我在这个特殊情况下所需要的东西来说是过分的,但对于我正在做的其他事情来说非常有用,所以非常感谢这句话:)