javascript - 阻止链接执行其 href 路径

标签 javascript jquery

您好,我正在尝试阻止链接执行其默认操作,但我似乎没有运气。这是我的代码:

 $("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 路径,但它不起作用。我做错了什么吗?

编辑:我刚刚注意到,如果我从点击事件处理程序中删除对灯箱对象的调用,e.preventDefault() 就会起作用。

最佳答案

您的问题在这一行:

var lightbox = $("#lightbox"); 

在onclick回调函数中隐藏 变量名称与在单击回调外部定义的全局灯箱对象的名称相同。上面提到的局部变量只是覆盖该函数范围内的全局变量。基本上,您正在调用 $("#lightbox")init:

$("#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 方法尚未执行,并且您要查找的元素尚未创建。

关于javascript - 阻止链接执行其 href 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337771/

相关文章:

javascript - 将参数从函数传递到 this.setState 回调函数

javascript - jQuery fllotcharts - 工具提示仅显示第一个图表的值

javascript - 如何将 JSLint 用于一段依赖于 JQuery 的代码?

javascript - 嵌套 CSS 类以与 Javascript 一起使用

javascript - 有没有办法使颜色框对象可拖动?

javascript - jQuery 切换最近的信息

javascript - 是否可以检测我的 div 中的文本是否超过一行?

javascript - Vue.js:v-for 超过对象会导致键的顺序错误

javascript - 从 jQuery 插件返回 true 或 false

javascript - 在 WordPress 中登录后添加 Bootstrap 模式