[英]Find link from closest li and open it in a new page - Javascript
我有一个分为两部分的子菜单:右侧是一个包含链接的li,左侧是每个li的图标。
图标使用css类,称为“ submenubtn”。我想制作一个JavaScript函数,该函数获取最接近的li的链接,分配给该图标,然后单击该图标,则该链接应在新选项卡中打开。
我希望我足够清楚,请问我您是否不了解的任何内容。
这是我到目前为止的代码:
$(document).ready(function() {
$("body").on("click", ".submenubtn", function() {
var link = $(this).find("li").attr('href');
//window.alert(link);
window.open(link)
});
});
链接返回“未定义”。
我不知道这有多大帮助,但是html页面:
<?Menu?>
<div id="<?$_name?>" class="atk-menu atk-menu-vertical atk-popover">
<ul>
<?Item?>
<?MenuItem?>
<li id="<?$id?>" class="<?$class?>"> <a href="<?$href?>"><i class="<?$icon?>"></i><?label?>MenuItem<?/?></a></li>
<?/MenuItem?>
<?/?>
<?$Content?>
</ul>
</div>
<?MenuSeparator?><?/MenuSeparator?>
<?/?>
编辑我解决了问题..请参阅我的答案
使用window.location.href = link;
和jQuery的最近()函数来获取所需的内容
要在新窗口中打开它,请添加window.open(link, '_blank')
我认为使用数据标签是解决方案
这里的来源: http ://api.jquery.com/data/
新李HTML:
<li data-url="HERE THE URL!"/>
您的新jQuery:
$(document).ready(function() {
$("body").on("click", ".submenubtn", function() {
var link = $(this).closest('li').data('url');
//window.alert(link);
window.open(link)
});
});
li
元素不能包含href
属性,您可以为li提供一个data
属性,例如:
<li data-href="your url here"></li>
那么您可以使用:
$(document).ready(function () {
$("body").on("click", ".submenubtn", function () {
var link = $(this).closest('li').data('url');
window.open(link, '_blank');
});
});
find()
用于查找元素的后代,由于您的锚点是li
元素的子代,因此不适用于您的情况。
因此,您需要使用closest()
遍历DOM树并获取最接近的父级li
。
$(document).ready(function () { $("body").on("click", ".submenubtn", function () { var link = $(this).closest('li').find('a').attr('url'); window.location.href(link); }); });
问题解决了
我设法解决了这个问题……这很简单。
$(document).ready(function() {
$(".submenubtn").click(function() {
a = $(this).closest('a').attr('href');
window.open(a);
return false;
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.