2017-02-04 7 views
2

Я хочу скрыть элемент, если он щелкнут вне элемента. als Но он не может быть закрыт, если нажать кнопку меню.Если оператор (кнопка не нажата)

Теперь у меня есть следующий код:

$(document).mouseup(function test (e) { 
    var button = $('.menu-button').data('clicked', true); 
    var container = $(".sf-menu"); 
    if (!container.is(e.target) && container.has(e.target).length === 0 && button.data('clicked') == false) { 
     container.hide(); 
    } 
}); 

Но проблема, как представляется, в:

button.data('clicked') == false) 

Как написать этот код правильно?

Thnx!

+0

Ьги кнопкой консоль лесозаготовительной .data ('clicked') и посмотреть, является ли это строкой или логическое - если вы хотите знать, что было нажато, посмотрите на e.target - также прекратите настройку щелчка на значение true перед тестированием, если оно ложно. – mplungjan

+2

Трудно понять, чего вы пытаетесь достичь, но я вижу, что вы все время задавали данные, которые были нажаты до истины, поэтому не могут быть ложными. – romuleald

ответ

0

вам нужно использовать $(button).data('clicked') и не button.data('clicked') как button будет содержать объект Jquery возвращенного $('.menu-button').data('clicked', true);

$(document).mouseup(function test (e) { 
    var button = $('.menu-button').data('clicked', true); 
    var container = $(".sf-menu"); 
    if (!container.is(e.target) && container.has(e.target).length === 0 && $(button).data('clicked') == false) { 
     container.hide(); 
    } 
}); 
+0

У вас есть возможность проверить ответ. Дайте мне знать, если у вас возникнут какие-либо проблемы –

0

Вы должны заменить

var button = $('.menu-button').data('clicked', true); 

с

var button = $('.menu-button').data('clicked', button.is(e.target));