有人可以帮我解决这个问题吗?我有一个页面,其中有一个菜单,我正在其中对包含“opener”类的链接执行一些 js 操作。
每个链接都效果很好,除了非“开启”链接(又名......外部链接),这些似乎没有任何作用。
你能告诉我我在这里做错了什么吗: http://new.o7thwebdesign.com
如果您单击“测试 1”,页面将按预期转到内部页面。 (请注意,“外部”仅存在于主页上,因此您需要单击“主页”)
如果您点击“外部”,它不会执行任何操作。
最佳答案
在脚本中h.basic.js
您有以下代码:
$('#menu li').click(
function () {
$(this).siblings().find('ul').slideUp('normal');
$(this).siblings().find(".menu_arrow").attr('src', '/Images/sidebar_icons/right_arrow.png'); // Slide up all menus except the one clicked
$(this).has('ul').find('ul').stop(true,true).slideToggle('normal'); // Slide down the clicked sub menu
$(this).attr('class', 'current');
var down = $(this).find(".menu_arrow").attr('src') == "/Images/sidebar_icons/right_arrow.png"
$(this).find(".menu_arrow").attr('src',
$(".menu_arrow").attr('src').replace(down ? 'right_' : 'down_', down ? 'down_' : 'right_'));
return false;
}
);
return false;
防止事件的默认操作(点击链接)。请尝试以下操作:
$('#menu li').click(
function (e) {
$(this).siblings().find('ul').slideUp('normal');
$(this).siblings().find(".menu_arrow").attr('src', '/Images/sidebar_icons/right_arrow.png'); // Slide up all menus except the one clicked
$(this).has('ul').find('ul').stop(true,true).slideToggle('normal'); // Slide down the clicked sub menu
$(this).attr('class', 'current');
var down = $(this).find(".menu_arrow").attr('src') == "/Images/sidebar_icons/right_arrow.png"
$(this).find(".menu_arrow").attr('src',
$(".menu_arrow").attr('src').replace(down ? 'right_' : 'down_', down ? 'down_' : 'right_'));
return e.target.target == '_blank';
}
);
更改后的行是:
return e.target.target == '_blank';
这有点令人困惑,但它会查看事件的目标元素(被单击的 anchor ),然后查看它的目标属性,该属性是使用 <a>
的目标属性设置的。标签。如果是_blank
然后返回 true,否则返回 false。所以链接到 target="_blank"
将保留默认行为,而没有默认行为的链接将抑制它。
关于javascript - 外部链接打不开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997307/