2013-07-21 34 views
2

我想在對話框關閉的時候調用一個函數,但是爲了測試的目的,我現在只是在做一個提醒,但以下操作不起作用。在jquery移動頁面上做些什麼關閉

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

檢查,看看你正在使用的ID'#fbfullpostviewpage'比DOM中的一次。 – DevlshOne

+0

@DevlshOne你的意思不止一次? – Dot

+0

該ID是否在頁面上多次出現?元素ID必須是唯一的。如果您必須重複,請改用類。 – DevlshOne

回答

2

我懷疑你的問題是,你的fbfullpostviewpage頁面是不是在這,您將可以結合您的活動點DOM的一部分。在這種情況下你應該做的是使用event delegation而不是直接綁定到頁面元素。

基本上與事件代表團

你做什麼是事件綁定到更高水平DOM元素(一路攀升到Document如果有必要,但一般應該嘗試並將其綁定儘量靠近目標選擇儘可能),當時確實存在,然後當事件冒起來DOM檢查以查看事件是否匹配某個選擇器。

除了允許您爲動態插入的元素綁定事件外,事件委託通常也更高效,因爲您可以減少綁定事件的數量。

例如,你可以使用jQuery的.on功能類似下面

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

+1瞭解詳細的答案。 – Omar