2

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

 $("#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>';
       } 
4

1 回答 1

2

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

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

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

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

$(document).on('pagehide', '#fbfullpostviewpage', function() { 
    alert('Dialog closed'); 
});
于 2013-07-21T23:56:37.560 回答