在Jquery移动页面上做一些关闭

时间:2013-07-21 23:20:13

标签: jquery jquery-mobile jquery-mobile-popup

我想在关闭对话框时调用一个函数,但是出于测试目的,我现在只是做一个警告,但以下不起作用。

 $("#fbfullpostviewpage").bind("pagehide",function(){
  alert("Dialog closed");
});

但是具有不同页面ID的相同代码有效吗?我如何才能使它适用于此页面?

标记:

 if ((post.attachment.media !== undefined) &&
     (post.attachment.media.length > 0) &&
     (post.attachment.media[0].type == "photo")) {

 markup += '<li><a href="#fbfullpostviewpage" class="item" data-rel="dialog" data-transition="pop" data-overlay-theme="e" data-inline="true" data-fullscreen="false"><img src="' + thumb_url + '">' +'<h5 style="white-space:normal;">' + name + '</h5><p>' +'posted this photo....</p><p>'+likes+'<img src="images/facebook-like-16.png"></p></a></li>';

  }else { 

 markup += '<li><a href="#fbfullpostviewpage" class="item" data-rel="dialog" data-transition="pop" data-overlay-theme="e" data-inline="true" data-fullscreen="false"><img src="https://graph.facebook.com/' + id + '/picture">'+'<h5 style="white-space:normal;">' + name + '</h5><p>' + short_post +'....</p><p>'+likes+'<img src="images/facebook-like-16.png"></p></a></li>';
       } 

1 个答案:

答案 0 :(得分:2)

我怀疑您的问题是您的 fbfullpostviewpage 页面不是您绑定事件时DOM的一部分。在这种情况下,您应该使用event delegation而不是尝试直接绑定到页面元素。

基本上使用事件委派,您要做的是将事件绑定到更高级别DOM元素(如果需要,一直到Document,但您通常应该这样做尝试将其绑定为尽可能靠近目标选择器)当时确实存在,然后当事件冒泡DOM检查以查看如果事件与某个选择器匹配。

除了允许您为动态插入的元素绑定事件之外,事件委派通常也更有效,因为您可以减少绑定的事件数。

例如,您可以使用jQuery .on函数,如下所示

$(document).on('pagehide', '#fbfullpostviewpage', function() { 
    alert('Dialog closed'); 
});