JQuery если и другие проблемы утверждения - PullRequest
1 голос
/ 15 декабря 2011

Я использовал следующий код, чтобы «щелкнуть снаружи», чтобы закрыть работу:

Вот jsfiddle всего кода (пожалуйста, включите jQuery на левой навигационной панели, чтобы он работал):

http://jsfiddle.net/jhacks/ZxBXe/17/

При щелчке по div-шоу:

$('div.topIconNew').click(
    function(){
        $(this).siblings('div.topTip').show();
        $(this).siblings('div.topDrop').slideDown(240);  

При щелчке за пределами div-окна скрыть:

$(document).click(
    function(event){
        $('div.topTip, div.topDrop').hide();
    }
);
$('div.topTip, div.topDrop').click(
    function(event){
        event.stopPropagation();
    }
);

Проблема с этим выше заключается в том, чтоесли я добавлю topIconNew .stopPropagation, то после открытия элементов topTip и topDrop они не закроются, если я снова нажму тот же topIconNew (т. е. переключатель) или другой экземпляр topIconNew.

Мое попытанное решение - этоследующее:

if($('div.topTip, div.topDrop').is(':visible')){
        $('div.topIconNew').click(
            function(){
                 // need to specify only divs currently open to hide
                $('div.topTip, div.topDrop').hide();
            }
        )
    }
    else {
        $('div.topIconNew').click(
            function(event){
                event.stopPropagation();    
            }
        );
    }   

Я хочу, чтобы выше сказанное скрывало topTip и topDrop при нажатии topIconNew только , если topTip и topDrop видимы И скрывают только topTipи элементы topDiv, которые в данный момент открыты.Кроме того, если ничего не открыто (оператор else), я хочу, чтобы topIconNew остановилPropagation ... так, чтобы div # wrapper.hide () не конфликтовал с topIconNew.show ().

В настоящее времяоператор else работает, так как без него topIconNew .show и .hide конфликтуют друг с другом и не работают.Но теперь они делают ...

Тем не менее, оператор if не работает, так как topTip и topDrop не закрываются, когда они открыты, и я нажимаю topIconNew.Кроме того, я знаю, по крайней мере, одну проблему, с которой я столкнулся, это то, что я не указал закрыть открытые в данный момент topTip и topDrop (сейчас я просто говорю, чтобы они закрыли любую из них).

Любой иВся помощь очень ценится здесь.Спасибо !!!

1 Ответ

1 голос
/ 15 декабря 2011

Что ж, есть проблема в том, что вы никогда не назначаете код скрытия для topIconNew.

Это немного ближе к тому, что вы хотели?

http://jsfiddle.net/ZxBXe/20/

...