Jquery mobile 有没有办法阻止JQuery Mobile复制事件?

Jquery mobile 有没有办法阻止JQuery Mobile复制事件?,jquery-mobile,Jquery Mobile,我正在将单击事件附加到页面上的图像 $('.ui-block-b img').click(function(event) {} 我使用的是jQuery移动固定页脚 我已经尝试使用pagecreate和pageinit事件来初始化它 当我单击页脚中的链接(使用Ajax加载),然后使用单击处理程序返回页面时,pagecreate和pageinit将被刷新。这是附加另一个单击事件,因此当我单击图像时,将触发2个事件 我想知道是否有一个jquery移动事件可以解决这个问题??我在文档中遗漏了什么吗 我

我正在将单击事件附加到页面上的图像

$('.ui-block-b img').click(function(event) {}
我使用的是jQuery移动固定页脚

我已经尝试使用
pagecreate
pageinit
事件来初始化它

当我单击页脚中的链接(使用Ajax加载),然后使用单击处理程序返回页面时,
pagecreate
pageinit
将被刷新。这是附加另一个单击事件,因此当我单击图像时,将触发2个事件

我想知道是否有一个jquery移动事件可以解决这个问题??我在文档中遗漏了什么吗

我通过在附加事件之前检查事件是否存在来解决这个问题,但是jQuery mobile似乎应该有一些东西来处理这个问题?我已经做了

var events = $('.ui-block-b img').data('events');
if (typeof events == 'undefined') { // attach handler}

也许jQuery mobile已经解决了这个问题,我只是缺少了一些东西?

你不应该用新页面加载JS,因为你知道你遇到的问题是每次创建页面时JS都在运行,每次绑定另一个点击事件时JS都在运行

解决方案是使用本地jQM指针$.mobile.activePage引用元素,该指针在pageshow事件触发后可用。或者在pageinit事件的根页面div(而不是文档)上放置jQuery侦听器

通过使用
$('.ui-block-b img')。单击(函数(事件){}
可以将绑定事件附加到多个页面中的元素(因为jQuery将页面附加到DOM),这就是您正在做的

<script type="text/javascript">         
   $("div:jqmData(role='page'):last").bind('pageinit', function(){
      //your code here - $.mobile.activePage not declared, but you can setup 
      // "on" events here that handle elements ONLY on this page
      //e.g. $(this).on('click', 'img.ui-block-b', function(){});
      // this puts a live event listener that only listens for this page
   });

   $("div:jqmData(role='page'):last").bind('pageshow', function(){
      //your code here - $.mobile.activePage works now
   });
</script>

$(“div:jqmData(role='page'):last”).bind('pageinit',function(){
//此处的代码-$.mobile.activePage未声明,但您可以进行设置
//此处的“开”事件仅处理此页面上的元素
//e、 g.$(this).on('click','img.ui-block-b',function(){});
//这将放置一个仅侦听此页面的实时事件侦听器
});
$(“div:jqmData(role='page'):last”).bind('pageshow',function(){
//这里的代码-$.mobile.activePage现在可以使用了
});
现在,当您绑定事件时,您可以确保只影响当前页面上的元素


组织这项工作有点困难,因此我在这里为另一个问题提出了一个更好的解决方案: