在 href 之前的 click() 函数中执行方法

Posted

技术标签:

【中文标题】在 href 之前的 click() 函数中执行方法【英文标题】:Performing methods in click() function before href 【发布时间】:2015-12-06 09:19:55 【问题描述】:

我有一个带有href 发送数据的按钮,在此之前我想使用Bootbox.js 显示一个弹出窗口

html

<a href="submit?result=something"> 
  <button class="alert btn btn-primary" type="button">Submit</button>
</a>

JS:

$('alert').click(function()
    bootbox.alert("Submitted!", function() 
        console.log("Alert Callback");
    );
);

这只是执行href 操作,因此它不会使用Bootbox.js 显示弹出窗口。有没有办法在关闭它后立即执行功能并执行 href?

供参考:http://bootboxjs.com

【问题讨论】:

在 bootbox 回调中显式触发href 请看***.com/questions/7078660/jquery-location-href 【参考方案1】:

你可以使用return false;

$('.alert').click(function(e) // missed the . for the class selector
    bootbox.alert("Submitted!", function() 
        location.href = this.parentNode.href;
    );
    return false;
);

另一个建议是在按钮本身上使用data-* 属性,而不是将其包装在锚点中:

<button class="alert btn btn-primary" data-href="submit?result=something" type="button">Submit</button>

那么你可以使用这个:

$('.alert').click(function(e) // missed the . for the class selector
    bootbox.alert("Submitted!", function() 
        location.href = this.dataset['href'];
    );
);

【讨论】:

【参考方案2】:

我认为您可以从 HTML 标记中删除超链接,只需保留按钮,然后执行以下操作:-

$('.alert').click(function()
    bootbox.alert("Submitted!", function() 
        console.log("Alert Callback");
        window.location.href = '/submit?result=something';
    );
);

【讨论】:

以上是关于在 href 之前的 click() 函数中执行方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在模糊功能之前执行点击功能

单击停止后执行我的setTimeout函数

通过 `onmousedown`、`click` 事件更改 `href` 的链接

python基础07--函数

元素的click与dblclick

AngularJS - 在使用 ng-click 运行函数之前需要输入字段