【问题标题】:First li is not displaying active content首先 li 没有显示活动内容
【发布时间】:2012-09-30 00:04:57
【问题描述】:

您好,我主要是一名设计师,但我自己负责了解幕后发生的事情,以帮助我设计更好的网站。

这是我从头开始设计和构建的第一个网站,一切都很顺利,直到我用 ul li 的活动状态遇到了这个问题。

这里是测试版的链接:http://www.philmckeith.com/stonebridge/2012/4-bedroom-house-the-york-bingley.html

带有下拉菜单的框是当前嵌套内容的位置。

HTML:

<div id="dd" class="wrapper-dropdown-2" tabindex="1">
<span>House Types</span>
 <ul class="dropdown">
  <li id="dd1"><a href="javascript:void(0);">Chester</a></li>
  <li id="dd2"><a href="javascript:void(0);">Durham</a></li>
  <li id="dd3"><a href="javascript:void(0);">York</a></li>
  <li id="dd4"><a href="javascript:void(0);">Westminister</a></li>
  <li id="dd5"><a href="javascript:void(0);">Ripon</a></li>
 </ul>
 </div>

<div id="content1" class="content"><img src="images/new-homes-bingley-chester-plan.png"></div>
<div id="content2" class="content"><img src="images/new-homes-bingley-durham-plan.png"></div>
<div id="content3" class="content"><img src="images/new-homes-bingley-york-plan.png"></div>
<div id="content4" class="content"><img src="images/new-homes-bingley-westminister-plan.png"</div>
<div id="content5" class="content"><img src="images/new-homes-bingley-ripon-plan.png"></div>

Javascript 选择器:

$(document).ready(function() {
//Active first link
//var activeId = $(".active").attr("id").replace("dd",""); $("#content" + activeId).show();
$("#dd a").click(function() {

  //reset
$(".content").hide(); //Hide all content
  $("ul.dropdown li:first").addClass("active").show(); //Activate first tab
  $(".content:first").show(); //Show first tab content
  $("#dd .active").removeClass("active");

  //act
  $(this).addClass("active")
  var id = $(this).closest("li").attr("id").replace("dd","");
  $("#content" + id).show();
});   
});

Javascript 切换:

function DropDown(el) {
            this.dd = el;
            this.initEvents();
        }
        DropDown.prototype = {
            initEvents : function() {
                var obj = this;

                obj.dd.on('click', function(event){
                    $(this).toggleClass('active');
                    event.stopPropagation();
                }); 
            }
        }

        $(function() {

            var dd = new DropDown( $('#dd') );

            $(document).click(function() {
                // all dropdowns
                $('.wrapper-dropdown-2').removeClass('active');

});
});

样式化的 ul 下拉列表选择隐藏的内容 ok 但不显示页面加载时的第一个 li 内容。我在 stackoverflow 上找到的壁橱文章就是这个解决方案。 using jquery to change visibility of divs with nested content, onclick

我已经尝试了以下方法,但目前还没有运气:

$('li').eq(0).addClass("active");

我猜我的切换脚本和选择器脚本有冲突或以某种方式重复,但不确定如何解决这个问题。非常感谢任何帮助/建议/文章。

【问题讨论】:

    标签: jquery html


    【解决方案1】:

    尝试将“JavaScript 选择器”更改为:

    (

    $(document).ready(function() {
        $("#dd a").click(function() {
            //reset
            $(".content").hide(); //Hide all content
            $("ul.dropdown li:first").addClass("active").show(); //Activate first tab
            $(".content:first").show(); //Show first tab content
            $("#dd .active").removeClass("active");
    
            //act
            $(this).addClass("active")
            var id = $(this).closest("li").attr("id").replace("dd","");
            $("#content" + id).show();
        });
        $("#dd1 a").click();            // selects the first house type
    });
    

    【讨论】:

    • 感谢 St3inn 非常感谢。为选择器工作,但在切换脚本中产生了问题。它使下拉列表一直停留在内容的顶部,直到再次单击它为止。我已经更新了测试版链接以显示我的意思:[链接](philmckeith.com/stonebridge/2012/…)。会尝试找到解决方法,但如果有人有任何想法,我会欢迎他们。
    • 通过从答案的第 6 行中删除其中一个 #dd 来纠正我刚刚在上面发布的错误。除非有 2 双 dd 没有双关语的原因 :)
    • 认为这是必要的(除了 .active 之外还引用 #dd 本身),但显然它不是 :) 我听说过的唯一情况可能有太多dd的;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多