有人可以帮我解决这个问题。我有一个页面,其中有一个菜单,我在包含类'opener'的链接上执行一些js。
每个链接都很有效,除了非“开启”链接(也就是...外部链接),这些似乎什么都不做。
你能告诉我这里我做错了什么: http://new.o7thwebdesign.com
如果单击“测试1”,页面将按原样进入内部页面。 (注意,“外部”仅存在于主页上,因此您需要单击“主页”)
如果点击“外部”,它就不会做任何事情。
答案 0 :(得分:2)
在脚本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';
这有点令人困惑,但它会查看事件的目标元素(被点击的锚点),然后查看它的目标属性,该属性是使用<a>
标记的目标属性设置的。如果是_blank
则返回true,否则返回false。因此,与target="_blank"
的链接将保留默认行为,而没有该链接的链接将保留默认行为。