【问题标题】:Button click not firing in modal window (Bootstrap)按钮单击未在模式窗口中触发(引导程序)
【发布时间】:2013-07-01 14:38:48
【问题描述】:

我在模态窗口中有一个按钮:

<button id="submit_btn" class="btn btn-link">Send the invitation</button>

我正在尝试捕获点击:

$('#submit_btn').click(function(event){
    event.preventDefault();
    alert( "GO" ); 
});

我读过按钮点击会在模态窗口中被吞没,为了防止这种情况,请使用 event.preventDefault()。但这行不通。我无法捕获此按钮的单击事件。

我还缺少什么?

非常感谢任何提示!

【问题讨论】:

  • 打开控制台并尝试触发事件..检查它是否有效..如果有效则可能是z-index问题
  • 打开你的控制台,看看是否有任何 Javascript 错误。这对我来说似乎很好。
  • 我制作了一个有效的 jsfiddle - jsfiddle.net/GqD4f/8 /edit 你的方法应该有效,这是一个有效的 jsfiddle - jsfiddle.net/CR3bM/1 - 你没有准备好将事件处理程序放入 DOM 中吗?
  • 是的,我没有准备好将我的事件处理程序放入 DOM 中。我忘记了那部分。但是,我确实在我的事件处理程序中为模式窗口“显示”了它,但没有奏效。

标签: javascript jquery twitter-bootstrap


【解决方案1】:

这是我在课堂上的表现(.copy-text)。

Javascript:

$(document).on('click', '.copy-text', function(){
    console.log($(this));
});

模态html:

<div class="modal fade" id="someid" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-body">    
      <ul class="list-group"> 
        <li class="list-group-item copy-text">Some text</li>
      </ul>
    </div>
  </div>
</div>

【讨论】:

    【解决方案2】:

    我刚才遇到了这个问题。

    由于某种原因,如果你换行了

      $(document).on("click","span.editComment",function(event) {
    

    其中之一:

     $(document).ready(function() {
    

    然后由于某种奇怪的原因它没有捕捉到点击。只需移除周围的文档即可:

     $(document).ready(function() {}
    

    您的代码应该可以工作!

    【讨论】:

      【解决方案3】:

      这对我有用:

      $(document).on("click", "#submit_btn", function(event){
          alert("GO"); 
      });
      

      【讨论】:

        【解决方案4】:

        试试这个 -

        $(document).on("click", "#submit_btn", function(event){
            alert( "GO" ); 
        });
        

        或者这个-

        $(document).delegate("#submit_btn", "click", function(event){
            alert( "GO" ); 
        });
        

        如果您使用的是旧版本的 jQuery,您可能不得不改用 live 方法。

        Live 方法(仅在必要时使用)

        $("#submit_btn").live("click", function(event){
            alert( "GO" ); 
        });
        

        我相当确定上述 3 种方法中的一种可以解决您的问题。您的事件处理程序不起作用的原因是您的 submit_btn 元素在评估事件处理程序时不存在。我为您提供的上述 3 个处理程序将处理现在和将来存在的 submit_btn 元素。

        /编辑

        这是一个有效的 jsfiddle - http://jsfiddle.net/GqD4f/8/

        /另一个编辑

        我使用您在帖子中的方法制作了一个 jsfiddle,它可以工作 - http://jsfiddle.net/CR3bM/1/

        您没有将事件处理程序放入 DOM 中吗?

        【讨论】:

        • Yes live 从 v1.7.x 开始被弃用,并在 v1.9 中被移除。如果他使用的是 1.4.2 之前的版本,他将需要使用 live。它的性能也比使用委托或 on 方法慢 - alfajango.com/blog/…
        • 我使用的是 jquery 1.9.1。感谢您的回答!
        • 不,我没有准备好将事件处理程序放入 DOM 中。我在那里的糟糕决定。
        • 为什么在 $(document) 下?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 2013-06-27
        • 1970-01-01
        • 2015-02-08
        • 2014-01-16
        • 2021-03-05
        • 1970-01-01
        相关资源
        最近更新 更多