【问题标题】:AnythingSlider: Make Nav Tabs Inactive?任何滑块:使导航选项卡处于非活动状态?
【发布时间】:2010-10-26 18:00:04
【问题描述】:

我正在使用AnythingSlider 工具,但在使用 css 和 js 时遇到了一些问题。基本上,滑块有许多导航选项卡,可帮助在幻灯片之间跳转。我想更改此设置,以便在运行冷融合条件时,某些选项卡将保持默认状态或变为非活动状态(将选项卡的颜色更改为灰色,当用户单击该选项卡时不会发生任何事情。)

所以基本上,我的 CF 应该是

<cfif #X# is ""> //if true, make tab #2 not clickable, change color to grey
                 //else, if false, keep tab normal.

滑块在html中基本上是这样设置的:

<ul>
    <li></li>  //slide #1
    <li></li>  //slide #2  etc etc
</ul>

我的想法是,也许我可以设置一个类 li class="false" 作为示例,并且每个“幻灯片”有两个 li 标签(如果 x 为真,则显示一个,如果不是,则显示另一个。)

所以,我不确定这是否有意义,但大多数情况下,我需要手动操作 CSS。滑块标签的代码如下所示:

div.anythingSlider.activeSlider .thumbNav a.cur, div.anythingSlider.activeSlider .thumbNav a {
    background-color: #7C9127;
}

更新好吧,我不明白。这是我页面末尾的代码(就在结束 BODY 标记之前。我在其中抛出了一些警报,只是为了确保代码运行并且它确实运行。但是,没有任何反应。选项卡不会变为非活动状态并且颜色永远不会改变。

我更改了anyslider.css 以包含以下内容:

div.anythingSlider.activeSlider .thumbNav a.false,
            div.anythingSlider.activeSlider .thumbNav a.false:hover { background: #555; }

这是我主页的底部。该脚本包含在一些 cfoutput 标签中:

    <cfif #selected_main_details.X# IS "">
        settab(3, false);
    <cfelse>
        settab(3, true);
    </cfif>

function settab(num, enable){
 var panel = $('.thumbNav a.panel' + num);
 if (enable){
  panel
   .removeClass('false')
   .unbind('click')
   .bind('click', function(){
    panel.closest('.anythingSlider').find('.anythingBase').data('AnythingSlider').gotoPage(num);
    return false;

   })
 } else {

  panel
   .addClass('false')
   .unbind('click focusin')
   .bind('click', function(){                     
    return false;

   })

 }
}

【问题讨论】:

    标签: javascript jquery css coldfusion anythingslider


    【解决方案1】:

    如果您只想更改标签颜色,请使用此 css

    div.anythingSlider.activeSlider .thumbNav a.false,
    div.anythingSlider.activeSlider .thumbNav a.false:hover { background: #555; }
    

    如果您想真正禁用该选项卡,则需要做更多的工作。我把这个函数放在一起来启用或禁用特定的选项卡。授予此功能将破坏该选项卡的哈希标记功能,并且不会禁用键盘或针对该面板的任何脚本 - 这需要对插件进行一些更改 (Demo)。

    function settab(num, enable){
     var panel = $('.thumbNav a.panel' + num);
     if (enable){
      panel
       .removeClass('false')
       .unbind('click')
       .bind('click', function(){
        panel.closest('.anythingSlider').find('.anythingBase').data('AnythingSlider').gotoPage(num);
        return false;
       })
     } else {
      panel
       .addClass('false')
       .unbind('click focusin')
       .bind('click', function(){
        return false;
       })
     }
    }
    

    使用上面的函数如下

    • 如果页面上有多个AnythingSlider,则面板变量应定义如下,#slider 指向特定滑块:

      var panel = $('#slider').closest('.anythingSlider').find('.thumbNav a.panel' + num);
      

      如果只有一个,那么这个较短的变量将起作用

      var panel = $('.thumbNav a.panel' + num);
      
    • 按如下方式禁用选项卡:

      settab(3, false);
      
    • 按如下方式启用选项卡:

      settab(3, true);
      

    【讨论】:

    • 非常感谢您的帮助。但是,我无法让它按照建议运行。请参阅上文了解我是如何实现它的。
    • 脚本在你初始化AnythingSlider后运行正确吗?
    • 是的。我什至将脚本放在页面底部。似乎没关系。我在那里发出了一些警报,只是为了看看代码是否正在运行。它们弹出,但总体上对选项卡没有影响。
    • 我不知道为什么它不适合你,但我在这里为你做了一个演示:jsfiddle.net/Mottie/svL2d 抱歉,我从未使用过 Coldfusion,所以我不能告诉你如果那里有问题。
    • 感谢您的演示。它的外观和运行方式与我在您的页面上所希望的一样。但是,我无法让它在我的页面上工作。我更新了上面的代码以反映当前状态。我的 Coldfusion 不是问题。我在那里放置了一些警报,只是为了查看代码是否真的在运行并且确实在运行。但是,页面上没有任何不同。我已经更新了css等。什么都没有。我不明白。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2017-05-26
    • 2020-07-29
    • 1970-01-01
    相关资源
    最近更新 更多