调用从ajax调用返回的javascript代码中的.trigger(“click”)

时间:2015-03-20 00:07:17

标签: javascript jquery ajax jquery-mobile

我想要做的是从ajax调用返回的视图中触发按钮的click事件。此过程在诸如chrome之类的pc浏览器中工作正常,但在移动浏览器中却不是这样。 (我正在使用jquery和jquery mobile)。

(这里涉及的代码要多得多,但为了清楚起见,我已将其删除了)

我的html页面中有一个按钮就像这样。

 <input type="button" id="bt1" value=""  />

它上面有一个onclick事件监听器。

我有一个调用php脚本的ajax调用:

 $.ajax({
        url: 'blah.php',
        type: 'get',
        data: {
            id : $('#field').val()
        },
        dataType: 'html',
        success: function (data) {
           $('#somediv').html(data);
        }
    });

它返回“data”,它是带有内联javascript的html段。它包含以下代码:

<div>
<script type="text/javascript">
    $(document).ready(function () {
      $("#bt1").trigger("click");
     });
</script>
</div>

我注意到,在移动设备中使用触发事件时不会触发。但在电脑上工作正常。

在处理移动设备时,DOM是否有不同之处,如果对象位于视图之外,它会阻止触发器(“点击”)工作?

3 个答案:

答案 0 :(得分:-1)

尝试在touchstart事件旁添加click事件。

$("#bt1").trigger("touchstart click");

答案 1 :(得分:-1)

您可能需要在移动设备上实施触控事件。看看这个SO答案:

Understanding touch events

如果您无法更改从服务器返回的内容,则可以侦听点击事件并触发触摸事件。

祝你好运, 麦克

答案 2 :(得分:-1)

找不到按钮,因为javascript代码和按钮元素是以编程方式创建的,请尝试:

$(document).find('#bt1').trigger('click');

$(document).find('#bt1').each(function(e) {
    e.trigger('click');
}

或者,更好:

success: function (data) {
    $('#somediv').html(data).promise().done(){
       $('#bt1').trigger('click');
    });
}