在链接上返回false单击jquery

时间:2010-01-13 15:55:02

标签: javascript jquery

我希望有一个链接可以在点击时打开弹出窗口,但如果用户没有启用JS,我希望它在新窗口中打开一个页面。

以下似乎不起作用,

<a id="tac-link" target="_blank" href="tac.html">terms and conditions</a>

function popUp(URL) {
day = new Date();
id = day.getTime();
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=550,height=600,left = 445,top = 150');");
    }

$('tac-link').click(function() {
    popUp('tac.html');
    return false;
});

4 个答案:

答案 0 :(得分:4)

我认为你的id选择器错了。尝试将$('tac-link')更改为$('#tac-link')

另一种方法:

$('a[target="_blank"]').click(function(e) {
    window.open( this.href );
    e.preventDefault();
});

答案 1 :(得分:2)

为了使此功能更兼容浏览器,您需要将事件对象传递给click处理程序,然后调用e.preventDefault();

示例:

$( '#button' ).click( function( e ) {
    //... your code...

    e.preventDefault();
    return false;
} );

答案 2 :(得分:0)

你只是错过了#表示它是一个id,而不是一个节点名称。

$('#tac-link')


PS - 我不建议使用eval,为什么不将所有页面变量存储在对象中呢?

var pages = {};

function popUp( url ) {
    var id = +new Date;
    pages[id] = window.open( url );
}

答案 3 :(得分:0)

另请注意,event.preventDefault并非在所有浏览器中都存在,并且会导致IE7之类的错误(如果内存服务。)为避免这种情况,请使用通用的if语句:

if (e.preventDefault) {  
    e.preventDefault();  
}  
e.returnValue = false;

这可以防止抛出错误。我相信jQuery也使用这种方法。