2013-03-11 37 views
0
回采链接

您好我想从执行它的默认操作停止联系,但我似乎没有luck.Here是我的代码:从执行它的href路径

$("a.delete").on("click", function (e) { 
    var container = $("#lightbox-background"); 
    var lightbox = $("#lightbox"); 

    lightbox.init("Are you sure you want to delete this book?") 
    e.preventDefault();  
}); 
var lightbox = { 
    init : function(actionString){ 
     $("<div id='lightbox-background'></div>").appendTo("body"); 
     $("<div id='lightbox'></div>").appendTo("body"); 
     $("<p></p>").appendTo("#lightbox"); 
     $("<a href='#' id='ok'>OK</a>").appendTo("#lightbox"); 
     $("<a href='#' id='cancel'>Cancel</a>").appendTo("#lightbox"); 
    } 
} 

我希望如果我使用e.preventDefault它会阻止链接进入它的href路径,但它不起作用。我做错了什么?

编辑:我刚刚注意到,如果我从click事件处理程序中删除了Lightbox对象的调用,则e.preventDefault()将起作用。

+1

你试过'返回false;'?它可能工作。 – Terry 2013-03-11 11:47:46

+0

再加一条语句:return false;在preventDefault之后调用 – 2013-03-11 11:48:07

+0

尝试在lightbox.init(“你......”)后加上缺少的冒号';';'。 – Stefan 2013-03-11 11:49:32

回答

2

你的问题在这一行:

var lightbox = $("#lightbox"); 

onclick回调函数隐藏 变量名与全局lightbox对象的名称相同,在外部点击回调。上面提到的局部变量只是覆盖该函数范围内的全局变量。基本上,你在呼唤init$("#lightbox")的:

$("#lightbox").init("....") 

不知道你在做什么,而是尝试更新你这样的代码:

$("a.delete").on("click", function (e) { 
    var container = $("#lightbox-background"); 
    var lightboxElement = $("#lightbox"); 

    lightbox.init("Are you sure you want to delete this book?") 
    e.preventDefault();  
}); 

此外,调用

var container = $("#lightbox-background"); 
var lightboxElement = $("#lightbox"); 

在第一次,你会得到一组空元素,因为init方法在那一刻不被执行,并且你正在寻找的元素还没有被创建。

0

尝试,如果它的工作原理

$("a.delete").on("click", function (e) { 
    var container = $("#lightbox-background"); 
    var lightbox = $("#lightbox"); 

    lightbox.init("Are you sure you want to delete this book?") 
    e.preventDefault(); 
    return false;  
}); 
+1

'return false;'与'event.stopPropgation()相同; event.preventDefault();'。 – 2013-03-11 11:50:51

0

您是否尝试过它宣布瓦尔以上:

$("a.delete").on("click", function (e) { 
    e.preventDefault();   
    var container = $("#lightbox-background"); 
    var lightbox = $("#lightbox"); 

    lightbox.init("Are you sure you want to delete this book?") 
}); 

只注意到你在关闭这里错过了​​3210:

var lightbox = { 
    init : function(actionString){ 
    $("<div id='lightbox-background'></div>").appendTo("body"); 
    $("<div id='lightbox'></div>").appendTo("body"); 
    $("<p></p>").appendTo("#lightbox"); 
    $("<a href='#' id='ok'>OK</a>").appendTo("#lightbox"); 
    $("<a href='#' id='cancel'>Cancel</a>").appendTo("#lightbox"); 
    } 
}; //<----this one 
0

示例像一个链接:

<a href="google.com"> google </a> 

采用javascript与jQuery

$("a").click(function(e){e.preventDefault(); return false;}); 

这不会重定向网页上的任何链接:)

或在特定的情况下,将像

$("a.delete").click(function(e){e.preventDefault(); return false;}); 

注意:已添加e.preventDefault();以防止事件触发。