只要区域不是<a>标签
React on click over an area as long as it was not an <a> tag
我有一个很大的区域需要使其可点击。想象一下,我有一个项目列表:
<ul class="my-area">
<li>...</li>
<li>...</li>
</ul>
项目<li>
里面有很多东西,包括工作链接或触发模式窗口的链接等。只要有人点击其中一个链接,它就应该执行指定的操作-重定向、打开模式窗口等。然而,如果点击的不是链接,而是<div>
、<span>
等,那么我需要重定向到特定位置。
我试过这个:
$("ul.my-area li:not(a)").click(function (event) {
location.href='SOME_LOCATION';
});
然而,它不起作用。我也考虑过使用.stopPropagation()
,但后来模式窗口停止工作,所以这不是一个选项。有什么想法吗?
编辑:有两种可能的解决方案:
第一种解决方案:event.stopPropagation()
*(not an option for this specific question because of modals)*
-看起来像:
$("ul.my-area li").on('click',function (event) {
//location.href='SOME_LOCATION';
});
$("ul.my-area li a").on('click',function(e){
e.stopPropagation();
});
第二个解决方案:由于您在anchors
中嵌套了DIV, IMG...
,因此在这里它将检查clicked element
是否不是anchor
或是否没有任何ancestor anchor
,并且在内部您可以更改location.href/do some action
:
$("ul.my-area li ").on('click', function(event) {
if (!((event.target.tagName == "A") || $(event.target).closest('a').length)) {
console.log("This is not an anchor");
//location.href='SOME_LOCATION';
}
else{ //it's an anchor }
});
查看下面的片段
$("ul.my-area li ").on('click', function(event) {
if (!((event.target.tagName == "A") || $(event.target).closest('a').length)) {
console.log("This is not an anchor");
//location.href='SOME_LOCATION';
}
else{ //it's an anchor }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="my-area">
<li>
<p>This is Paragraf <a href="#">This is Anchor</a>
</p>
<div>This is DIV</div>
</li>
<li>
<p>This is another Paragraf</p>
<a href="#">
<div>This Div inside Anchor<span> This is span inside div inside the anchor</span>
</div>
<img src="" alt="Image part of the anchor">
</a>
<p>Some paragraf</p>
</li>
</ul>
相关文章:
- 在<页眉>标签
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- </脚本>标签放错地方了
- Jquery在点击<a>标签
- Ionic V1.3-标签-带条件的徽章样式<离子选项卡>
- <选择>标签不起作用
- 如何在<嵌入>标签在Plone 4.1中
- 在<script src=“"></脚本>标签
- 使用几个<脚本>标签不会't工作-只调用一个脚本
- 如何在更新面板内部调用/触发javascript函数<触发器>标签
- react-让一个元素返回两个相邻的<tr>标签
- <h1>标签在离子含量元素中不可见
- VS代码:在<脚本>标签
- 在</表单>标签
- Meteor.js:<脚本>标签不't在<身体>
- Highlight.js为每个<代码>标签
- 聚合物-如何从<a>标签
- 当通过<a>标签,它无法正确加载
- HTML上的Webpack JSX错误<来源>标签
- 如何使角度显示为空<p>标签