触发事件在触摸设备中不起作用

时间:2015-12-31 06:33:29

标签: android jquery mobile eventtrigger

我有以下JS代码,它在桌面上完美运行,但它不适用于触控设备。

jQuery(document).ready(function(){
  jQuery("#gallery_trigger").click(function () {
    jQuery(".my-second-portfolio").trigger( "click");
  });  

});

根据我的分析,我认为以下代码行无法正常工作

jQuery(".my-second-portfolio").trigger( "click");

我了解 .trigger(“点击”); 不适合触控设备,所以能帮我在所有设备上使用此代码吗?

3 个答案:

答案 0 :(得分:1)

尝试'点按'或'vclick'

http://api.jquerymobile.com/tap/

$(".my-second-portfolio").tap();

答案 1 :(得分:0)

你在jQuery中学到的第一件事就是在$(document).ready()函数中调用代码,这样一旦加载了DOM,一切都会执行。但是,在jQuery Mobile中,Ajax用于在导航时将每个页面的内容加载到DOM中。由于这个$(文档).ready()将在加载第一个页面之前触发,并且每个用于页面操作的代码将在页面刷新后执行。这可能是一个非常微妙的错误。在某些系统上,它似乎可以正常工作,但在其他系统上可能会导致不稳定,难以重复的怪异。

经典jQuery语法:

$(document).ready(function() { 

});

解决这个问题(相信我这是一个问题)jQuery Mobile开发人员创建了页面事件。简而言之,事件是在特定页面执行中触发的事件。其中一个页面事件是一个pageinit事件,我们可以像这样使用它:

$(document).on('pageinit', function() {

});

要执行只能用于索引页面的代码,我们可以使用以下语法:

$('#index').on('pageinit', function() {

});

还有另一个特殊的jQuery Mobile事件,它被称为mobileinit。当jQuery Mobile启动时,它会触发文档对象上的mobileinit事件。要覆盖默认设置,请将它们绑定到mobileinit。 mobileinit使用的一个很好的例子是关闭ajax页面加载,或者更改默认的ajax加载器行为。

$(document).on("mobileinit", function(){
  //apply overrides here
});

或者你可以使用这样的东西:

$('div:jqmData(url="index.html")').on('pageshow',function(){
    // code to execute on that page
    //$(this) works as expected - refers the page
});

答案 2 :(得分:0)

您可以尝试使用$('.my-second-portfolio')[0].click();模拟鼠标单击实际的DOM元素(而不是jQuery对象),而不是使用.trigger()jQuery方法。

注意:DOM Level 2 .click()不适用于Safari中的某些元素。您需要使用解决方法。

http://api.jquery.com/click/