2014-02-07 81 views
24

我正在使用對話框,當用戶單擊頁面上的任何位置時,我正在關閉該對話框,期望該對話框。

這裏是我的代碼:

$('body').on('click','.ui-widget-overlay',function() 
{ 
    $('#myRateSettingsPopup').dialog('close'); 
}); 

不知怎的,它返回一個錯誤:

$(...)就不是一個函數

什麼是錯我的代碼?

我正在使用jquery-1.6.1.min.js,但我無法將其更新到最新版本。我受約束。

有沒有其他方法可以做到這一點?

+1

是否包括jQuery的正確?你使用什麼版本? – Felix

+2

很有可能**你沒有使用最新版本的jQuery **。 – SixteenStudio

+0

我正在使用jquery-1.6.1.min.js。但我不能將其更改爲最新版本 –

回答

45

方法on在jQuery 1.7版中引入。

我想你必須升級你的jQuery庫到最新版本。

否則,您可以使用bind

$(".ui-widget-overlay").bind("click", function(e) { 
    $('#myRateSettingsPopup').dialog('close'); 
    e.stopPropagation(); 
}); 
+0

你能用我的代碼嗎? –

+0

@CodeHunter看到我的代碼。 – Adrian

+0

錯誤被刪除,但現在它不關閉我的彈出窗口, –

0

嘗試live而不是on其jQuery的版本問題

$('body').live('click','.ui-widget-overlay',function() 
{ 
    $('#myRateSettingsPopup').dialog('close'); 
}); 
1

在jQuery 1.6.1不支持on所以你可以使用live

$('body').live('click','.ui-widget-overlay',function(event) 
{ 
      event.stopPropagation();   
      $('#myRateSettingsPopup').dialog('close'); 

}); 
3

替換爲。對()jQuery中> 1.4.2是delegate()

$('body').delegate('.ui-widget-overlay', 'click', function() { 
    $('#myRateSettingsPopup').dialog('close'); 
}); 
2
$(".close").bind("click", function(e) { 
$('#popup1').hide(); 
    e.stopPropagation(); 
}); 

的jquery-1.7 jQueryUI的/ 1.8.2完美。

或您的覆蓋

$(".YOUR OVERLAY").bind("click", function(e) { 
$('#YOUR POPUP').hide(); 
    e.stopPropagation(); 
}); 
相關問題