0

jspページ内にチェックボックスのあるダイアログがあります。このダイアログは、ハイパーリンクをクリックすると開きます。

私が達成しようとしている機能は、次のルールによって管理されています。

  1. ダイアログは、内部のチェックボックスがオンになっている場合にのみ閉じる必要があります。
  2. ダイアログが再度開かれ、チェックボックスがすでにオンになっている場合、ユーザーはページの任意の場所をクリックして閉じることができます。
  3. ダイアログが再度開かれ、チェックボックスがオンまたはオフになっていない場合、ユーザーはチェックボックスをオンにすることによってのみダイアログを閉じることができます。

    function closeDialog() {
       var checked = $('.checkboxClass').attr('checked');
    
       $('.ui-widget-overlay').live('click', function() {
    
        if(checked){
        $('#'+divId).dialog('close');
        }else{
        <!-- since unchecked, dialog should not be closed-->
            //$(document).unbind('click');
        //$('.ui-widget-overlay').unbind('click');
            $('.ui-widget-overlay').die('click');
        }
       });
    }   
    
    <!-- This detects if checkbox is clicked-->
    $('.checkboxClass').live('click', function() {
        var checked = $('.checkboxClass').attr('checked');
        if(checked){
            $('#'+divId).dialog('close');
        }
    });
    

手順3を実行するためにすべてのことを試みました。つまり、ユーザーがダイアログの外側をクリックした場合にダイアログが閉じないようにしましたが、ダイアログは閉じられます。何か案は?私はjQuery1.4を使用しているので.live()、非推奨であることがわかっているものを保持したいと思います。

4

1 に答える 1

1

.ui-widget-overlayイベントバインドをに変更してみてください

$('.ui-widget-overlay').live('click', function(e) {
...

次に、elseでe.stopPropagation()を実行しますか?

于 2012-10-29T22:45:31.940 に答える