web-dev-qa-db-ja.com

$(...)。onは関数ではありません-jQueryエラー

ダイアログボックスを使用しています。ユーザーがページ上の任意の場所をクリックすると、ダイアログボックスが表示されます。

ここに私のコードがあります:

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

何らかの理由でエラーが返されます:

$(...)。onは関数ではありません

私のコードの何が問題になっていますか?

Jquery-1.6.1.min.jsを使用していますが、最新バージョンに更新できません。私は縛られています。

これを行う他の方法はありますか?

32
Hassan Sardar

メソッド on はjQueryバージョン1.7で導入されました。

JQueryライブラリを最新バージョンにアップグレードする必要があると思います。

それ以外の場合は、 bind を使用できます。

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

JQuery> 1.4.2での.on()の置換は delegate()

$('body').delegate('.ui-widget-overlay', 'click', function () {
    $('#myRateSettingsPopup').dialog('close');
});
4
Arun P Johny
$( ".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(); 
});

Jquery 1.6.1はonをサポートしていないため、liveを使用できます。

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

});
1
Prashobh

liveの代わりにonを試してください。jqueryバージョンの問題です

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