有没有可能阻止jQuery触发HTML5数据属性操作?
我问这个问题只是为了学习,因为我在写这篇文章之前就已经解决了这个问题,但也许你会指出一些对其他人有用的东西 我正在使用和它,下面是我的代码的作用。我们打开一个模式,要求用户输入一些json,然后,用户按下“计算按钮”计算数据,然后模式关闭,因为有没有可能阻止jQuery触发HTML5数据属性操作?,jquery,html,twitter-bootstrap,Jquery,Html,Twitter Bootstrap,我问这个问题只是为了学习,因为我在写这篇文章之前就已经解决了这个问题,但也许你会指出一些对其他人有用的东西 我正在使用和它,下面是我的代码的作用。我们打开一个模式,要求用户输入一些json,然后,用户按下“计算按钮”计算数据,然后模式关闭,因为数据关闭 我只是想知道是否有可能使用jQuery、javascript或其他工具阻止由html数据属性触发的操作 以下是模态的HMTL代码: <div class="modal hide fade" id="source_modal">
数据关闭
我只是想知道是否有可能使用jQuery、javascript或其他工具阻止由html数据属性触发的操作
以下是模态的HMTL代码:
<div class="modal hide fade" id="source_modal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>Manually insert the data</h3>
</div>
<div class="modal-body">
<textarea class="source_input">Insert your data here</textarea>
<div class="clear"></div>
<a href="#" class="btn action_clear">Clear</a>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<a class="btn btn-primary action_compute" data-dismiss="modal" href="#"><i class="icon-fire"></i> Compute</a>
</div>
</div>
是否可以防止由数据解除触发的操作
注:
- Twitter引导提供了一个jquery方法来关闭模式,因此我删除了
数据解除
,并使用$('upload_modal').modal('hide')解除模式代码>只有当我尝试到最后,它才会做我想要的
- jQuery
event.preventDefault()当放置在catch(err)
jQuery code;)的第一行时,code>不会停止dismise操作李>
尝试添加一个侦听器,以防止执行hide
方法
$('.modal').one('hide', function (e) {e.preventDefault()});
将其放在错误捕获部分中。只要在调用hide()
之前处理了click事件,就应该可以工作
既然你说过这个问题是为了学习,我将在这里补充一些关于引导插件事件体系结构的额外信息
许多引导插件包括“之前”和“之后”事件。“before”事件(在本例中为hide)在执行相关方法的任何基本操作之前被触发并向上传播到DOM。当执行返回到最初的触发方法时,发生的第一件事是检查操作是否已取消:
if (e.isDefaultPrevented()) return
因此,任何调用e.preventDefault()
的事件侦听器都将有效地取消该操作。就像你所期望的那样简单
任何实现良好的触发事件的jQuery插件都应该具有此功能。在我看来event.preventDefault()
与数据释放
或类似的东西没有关系。它是由DOM规范定义的方法,其目的是防止DOM事件的默认后果。然而,在您的例子中,由于引导的JS中的一些内部逻辑,modal是关闭的(一些处理程序附加到带有data dismise
attr的元素)。也就是说,您不能定义我们自己的函数,调用它,然后尝试使用event.preventDefault()
call退出它。感谢您提供了这个精彩的答案,感谢您花时间添加了大量的附加信息,这肯定是我能得到的最好答案。工作完全如预期!我甚至了解到,我们可以轻松地添加额外的资源,例如将Twitter引导直接添加到JSFIDLE:)再次感谢您,非常感谢。
if (e.isDefaultPrevented()) return