在侧边导航上具有不同的单击区域
Having different click areas on sidenav
>我正在使用引导程序,并且我正在使用侧面导航在页面左侧提供可折叠列表。下面是我的代码。
<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()
。我将这个数据切换和数据目标更改为 i 类,但问题是该函数仍然被调用,如果我将 i 类移出标签,样式就会乱七八糟。
那么有人可以阐明如何在父 li 上设置不同的点击区域吗?一个用于折叠,另一个用于调用函数以加载右侧内容页面。
PS:尝试实现这种 http://cssmenumaker.com/menu/modern-jquery-accordion-menu 侧导航列表,其中 + 或 - 应该只能单击以展开和折叠。请单击该链接中的在线构建以查看侧面导航。其他区域(除了 + 和 - 图标(应充当链接 href 来加载页面。
不要将数据切换属性提供给锚点,而是将其提供给图标元素,以便切换仅适用于图标。您可以使用此处的类进行加号和减号,并在类glyphicon-plus
和glyphicon-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');
});
现在,单击锚点,您可以检查元素是否A
,如果为 true,则仅调用自定义函数 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');
}
见小提琴
jsbin demo
删除 HTML 中的内联 JS:
<a class="active" href="#" data-toggle="collapse" data-target="#licomp1">
<i class="fa fa-fw fa-arrow-v"></i>Parent1
</a>
只需将其添加到您的jQuery中:
function loadelementsonpage(){
alert("LOADED ELEMENTS! YIIHA"); // Or whatever goes here
}
$(".side-nav").on("click", "a[data-target]", function(e) {
e.preventDefault(); // Prevent default Browser anchor-click behavior
if( !$(e.target).hasClass("fa") ){ // If the clicked el. target was not `.fa`
// means it was the parent `a` to get the click event. Therefore...
e.stopPropagation(); // prevent the click to propagate
// to underneath layers triggering stuff and...
return loadelementsonpage(); // execute (return) our desired function.
}
});
(确保它位于 document.ready 函数中(
以上有什么作用
概念证明:
function loadelementsonpage(target) {
// example stuff
$(target).toggle();
}
$(".side-nav").on("click", "a[data-toggle]", function(event) {
event.preventDefault(); // Prevent default Browser anchor-click behavior
var icon = $(event.target).find('.collapseIcon');
if (icon.text() === '+') {
icon.text('-');
} else {
icon.text('+');
}
loadelementsonpage(event.target.getAttribute('data-target'));
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav side-nav">
<li>
<a class="active" href="#" data-toggle="collapse" data-target="#licomp1">
<span class="collapseIcon">-</span> Parent1
</a>
<ul id="licomp1" class="collapse">
<li><a href="#">Child1</a>
</li>
<li><a href="#">Child2</a>
</li>
<li><a href="#">Child3</a>
</li>
</ul>
</li>
</ul>
- 单击select'时将数组行回显到文本区域中;s选项
- 如何使用javascript在区域外单击时隐藏元素
- 单击TextArea'时,文本区域中的属性名称是什么;s上下箭头按钮
- 单选按钮单击可刷新/更改网站的小区域
- 通过 NG 单击选择文件或文本区域数据
- 单击“段落到文本区域”后,它会更新段落中的文本
- 如何在单击“提交”按钮后使文本区域和 IMG 标签只读
- 单击可拖放区域
- 单击输入区域时出现问题
- 单击时获取文本区域中插入符号的位置
- 将光标保持在文本区域,每次单击都添加每个内容
- 如何在单击区域 HREF 标签时创建活动事件(更改 BG 或创建边框)
- 尝试在悬停在可单击区域时更改图像
- 具有可单击区域的网页图像,可将数据发送到服务器脚本,并保留在同一页面上,无需刷新
- 更改“Jquery 工具”选项卡幻灯片可单击区域
- 单击时缩小的按钮的可单击区域
- 在画布中制作可单击区域以更改图像
- 在侧边导航上具有不同的单击区域
- 在一个图像上定义多个单击区域
- 放大复选框单击区域