外部链接未打开

时间:2012-04-03 16:15:19

标签: javascript jquery html

有人可以帮我解决这个问题。我有一个页面,其中有一个菜单,我在包含类'opener'的链接上执行一些js。

每个链接都很有效,除了非“开启”链接(也就是...外部链接),这些似乎什么都不做。

你能告诉我这里我做错了什么: http://new.o7thwebdesign.com

如果单击“测试1”,页面将按原样进入内部页面。 (注意,“外部”仅存在于主页上,因此您需要单击“主页”)

如果点击“外部”,它就不会做任何事情。

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"的链接将保留默认行为,而没有该链接的链接将保留默认行为。