【问题标题】:click doesn't fire in jquery ajax call在 jquery ajax 调用中单击不会触发
【发布时间】:2013-06-24 15:48:45
【问题描述】:

我的 Ajax 调用有问题。在成功函数中,我想触发对元素的点击,但它不会触发。

代码如下:

$.ajax({
    url : '/test/'+clubID,
    beforeSend:function(){
        $.mobile.showPageLoadingMsg();
    },
    complete:function(){
        $.mobile.hidePageLoadingMsg();
    },
    success:function(data, textStatus, jqXHR){
        if(!jQuery.isEmptyObject(data)) {
            $('#camera-input').click();
            console.log($('#camera-input'));
            console.log('click');
        } else {
            toast('Il est possible de prendre des photos uniquement lors d\'une soirée');
            console.log('toast');
        }
    }
});

控制台打印点击和元素。关于这个问题的任何想法?

感谢您的帮助

【问题讨论】:

  • “触发点击”是什么意思?这会触发点击处理程序,但不会提示原生点击行为。
  • 你有绑定到你正在执行的点击事件的代码吗?确保您的绑定实际已设置。
  • $('#camera-input') 是否返回预期的元素?在调试器中调用它时,您还可以在那里查看您要调用的点击处理程序是否实际绑定。
  • 如果我把 $('#camera-input').click();在 ajax 调用之前,它会打开窗口来选择一个文件。我想重现那个,但是在成功函数中
  • 是的,它返回true并且控制台中没有错误。可能是 jQuery Mobile 和 Ajax 请求有问题。

标签: jquery


【解决方案1】:

试一试...这是我的研究,不是我的经验。没有保证。

您可能需要将事件处理程序绑定到应该触发它的元素的共同祖先。例如,如果你的#element 被附加到一个 id 为 parent 的 div 中:

$("#parent").on("click", ".commenticon", function() {
    //Do stuff
});

这适用于这样的 HTML 结构:

<div id="parent">
    <div class="element">

    </div>
    <div class="element">

    </div>
</div>

DOM 事件从它们的起源点向上冒泡。 on()(以前的委托 - jQuery pre 1.7)方法在祖先元素处捕获事件并检查它是否源自与选择器匹配的元素。

Source

【讨论】:

    【解决方案2】:

    试试这个,

    $('#camera-input').trigger('click');

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 2022-01-17
      • 2014-09-15
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多