2

ボタンをクリックするとリストが表示されます。問題は、フォーカスが失われるたびにリストを非表示にしたいことです。つまり、ユーザーがページの任意の場所をクリックしますが、そのリストはクリックしません。これどうやってするの?また、プロファイル設定のリスト()であるlast.fmでどのように表示されるかを確認できますli.profileItem。(ul.del li ulデフォルトはdisplay:none)基本的なリスト構造:

<ul class='del'>
    <li>
        <button class='deletePage'></button>
        <ul>
            <li></li>
            <li></li>
        </ul>
    </li>
</ul>

このリストを表示するための私の関数:

$(".deletePage").click(function(){
    if( $(this).siblings(0).css("display") == "block" ){
        $(this).siblings(0).hide();
    } else {
        $(this).siblings(0).show();
    }
});
4

3 に答える 3

2

要素の外側のクリックを検出する方法を参照してください。

clickハンドラーをにバインドしdocumentてリストを非表示にしてから、を呼び出すボタンに別のハンドラーをアタッチできますevent.stopPropagation

$(document).click(function() {
 $('.list-to-hide').hide();
});

$('.show-list-button').click(function(event) {
 event.stopPropagation();
});

または、 jQuery外部イベントプラグインを使用することもできます。

$('.show-list-button').bind('clickoutside', function() {
 $('.list-to-hide').hide(); 
});
于 2010-03-29T19:43:12.423 に答える
1

このようなことを処理する機能を追加するBenAlmanの「OutsideEvents」プラグインをチェックしてくださいbind('clickoutside')

于 2010-03-29T19:45:25.570 に答える
1

ドキュメントクリックイベントを使用できます。ユーザーがdiv内をクリックすると、イベントの伝播がそこで停止します(e.stopPropagation)。それ以外の場合は、メニューが開いているかどうか、メニューが閉じているかどうかを確認するドキュメントクリックイベントによって処理されます。

$(document).click(function() { 
  // check if the menu is open, if so close it
});

$("#windowdiv").click(function(e){
  e.stopPropagation();
  // do stuff
});
于 2010-03-29T19:48:22.550 に答える