【问题标题】:Data-toggle disable the a tags insideData-toggle 禁用里面的 a 标签
【发布时间】:2018-10-08 21:45:35
【问题描述】:

我有一个带有data-toggle="modal" data-target="#myModal" 的 div,它工作正常。 但是,当我在 div 中有链接时,它们也会激活模式。有没有办法禁止 a 标签打开模态框?

.team-section-inner{
  border: 1px solid;
}
 <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="team-section-inner" data-toggle="modal" data-target="#myModal">
  <h1>activates modal</h1>
  <a href="#footer">Activates modal but needs to be disabled</a>
</div>

<!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>

【问题讨论】:

  • 向我们展示您的代码 :)
  • @Gobbin 插入了它

标签: jquery html css twitter-bootstrap bootstrap-modal


【解决方案1】:

您的活动正在冒泡。当您单击 div 本身中的 a 时,您需要取消该事件。不过,您需要 jQuery。您可以使用stopPropagation() 来阻止它。文档here.

Here 很好地解释了事件冒泡是什么。

$('.team-section-inner a').on('click', function(e){
  e.stopPropagation();
})
.team-section-inner{
  border: 1px solid;
}
<meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="team-section-inner" data-toggle="modal" data-target="#myModal">
  <h1>activates modal</h1>
  <a href="#footer">Activates modal but needs to be disabled</a>
</div>

<!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>

【讨论】:

    【解决方案2】:

    不,你不能;只需在触发模式的h1 之前添加div 即可修复它

    <div class="team-section-inner">
      <div data-toggle="modal" data-target="#myModal">
        <h1>activates modal</h1>
      </div>
      <a href="#footer">Activates modal but needs to be disabled</a>
    </div>
    

    【讨论】:

    • “你不能”在编程世界中永远不是答案!
    • @Gobbin 我完全同意;你的回答就像一个魅力;但是,如果他想创建一个打开模式的简单文本,那么停止事件的传播就没有任何意义;如果还有其他按钮/动作怎么办……我的回答是基于此;而已。它更像you shouldn't 而不是you can't
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2013-11-05
    • 2017-05-25
    • 2013-08-16
    • 1970-01-01
    相关资源
    最近更新 更多