javascript - 在 sidenav 上有不同的点击区域

标签 javascript html css twitter-bootstrap font-awesome

我正在使用 Bootstrap ,因为我正在使用侧导航在页面左侧提供可折叠列表。下面是我的代码。

<ul class="nav navbar-nav side-nav">
    <li>
       <a class="active" href="#" onclick="loadelementsonpage(); return false" data-toggle="collapse" data-target="#licomp1">
          <i class="fa fa-fw fa-arrow-v"></i>Parent1
       </a>
       <ul id="licomp1" class="collapse">
         <li><a href="#" onclick="loadelements1();">Child1</a></li>
         <li><a href="#" onclick="loadelements2();">Child2</a></li>
         <li><a href="#" onclick="loadelements3();">Child3</a></li>
        </ul>
    </li>
</ul>

而不是固定的<i class="fa fa-fw fa-arrow-v"></i>我想使用切换加号和减号。如代码所示,我在单击 parent1 时调用了一个函数。但是当我尝试扩展 ul 时,函数 loadelementsonpage()每次都被调用。所以,我希望列表仅在单击该切换图像时折叠。以同样的方式我想调用loadelementsonpage()仅当单击该切换图像的外部区域时。我将此 data-toggle 和 data-target 更改为 i 类,但问题是该函数仍在被调用,如果我将 i 类移出标签,样式就会困惑。

那么有人可以阐明如何在父 li 上有不同的点击区域吗?一个用于折叠,另一个用于调用函数以加载右侧内容页面。

P.S: 尝试实现这个 http://cssmenumaker.com/menu/modern-jquery-accordion-menu一种侧面导航列表,其中 + 或 - 应该可以单击以仅展开和折叠。请单击该链接中的在线构建以查看侧面导航。其他区域(+ 和 - 图标除外)应充当链接 href 以加载页面。

最佳答案

与其将 data-toggle 属性赋予 anchor ,不如将其赋予 icon 元素,以便 toggle 仅对 icon 起作用。您可以使用类 here for plus and minus并在类 glyphicon-plusglyphicon-minus

之间切换
<a class="active" href="#">
   <span data-toggle="collapse"  class="glyphicon glyphicon-plus" data-target="#licomp1"></span>Parent1
</a>

$('.side-nav a span').on('click', function () {
    $(this).toggleClass('glyphicon-plus glyphicon-minus');
});

现在单击 anchor ,您可以检查元素是否为 A,如果为真,则仅调用自定义函数 loadelementsonpage

$('.side-nav a').on('click', function (e) {
    console.log(e.target.tagName);
    if (e.target.tagName == "A") {
        loadelementsonpage();
        return true;
    }
})

function loadelementsonpage() {
    alert('Load elements on page');
}

See fiddle

关于javascript - 在 sidenav 上有不同的点击区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27562043/

相关文章:

javascript - 如何命名和重用 javascript 函数

JavaScript 正则表达式帮助

html - 允许水平移动的固定物体

css - Bootstrap - 在导航栏 div 之外设置 Logo

javascript - 在子 div 中滚动(固定)应该滚动父 div

html - 如何在 webprgramming 中围绕控件创建一个框

javascript - 作为参数的匿名函数的作用域

javascript - 在 if 语句中声明或不声明函数的原因

javascript - 表单提交按钮 onclick 不调用我的 JS 函数

html - jQuery 图片加载问题