Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有可能阻止jQuery触发HTML5数据属性操作?_Jquery_Html_Twitter Bootstrap - Fatal编程技术网

有没有可能阻止jQuery触发HTML5数据属性操作?

有没有可能阻止jQuery触发HTML5数据属性操作?,jquery,html,twitter-bootstrap,Jquery,Html,Twitter Bootstrap,我问这个问题只是为了学习,因为我在写这篇文章之前就已经解决了这个问题,但也许你会指出一些对其他人有用的东西 我正在使用和它,下面是我的代码的作用。我们打开一个模式,要求用户输入一些json,然后,用户按下“计算按钮”计算数据,然后模式关闭,因为数据关闭 我只是想知道是否有可能使用jQuery、javascript或其他工具阻止由html数据属性触发的操作 以下是模态的HMTL代码: <div class="modal hide fade" id="source_modal">

我问这个问题只是为了学习,因为我在写这篇文章之前就已经解决了这个问题,但也许你会指出一些对其他人有用的东西

我正在使用和它,下面是我的代码的作用。我们打开一个模式,要求用户输入一些json,然后,用户按下“计算按钮”计算数据,然后模式关闭,因为
数据关闭

我只是想知道是否有可能使用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