jQuery + не селектор - PullRequest
       6

jQuery + не селектор

0 голосов
/ 15 ноября 2011

Будучи новичком в Javascript и jQuery, я не уверен, возможно ли это вообще или я просто совершаю совершенно глупую ошибку:

Я пытаюсь скрыть div при любом нажатии за пределами div.

Я упростил код для демонстрационных целей:

HTML

<html>
    <div class="tooltip">
        Bla Bla Bla
    </div>
</html>

JQuery

$('html:not(.tooltip)').click(function() {

    $('.tooltip').hide();

});

Демо

http://jsfiddle.net/yCx6F/1/

Ответы [ 4 ]

5 голосов
/ 15 ноября 2011

Добавить пробел:

$('html :not(.tooltip)')

Когда вы говорите html:not(...), вы ищете все html элементы, не соответствующие вашему селектору.

Добавление пробела ищет детейэлемент html, который вам нужен.

Посмотрите, делает ли это то, что вы хотите: http://jsfiddle.net/yCx6F/2/


На самом деле, вы должны делать это:

$('.tooltip').click(function(e) {
  e.stopPropagation();
});

// Once the `<div>` is created, in the same function:

$(document).one(function() {
  $('.tooltip').hide();
});
2 голосов
/ 15 ноября 2011

Попробуйте это ...

$('*:not(.tooltip)').click(function() {
    $('.tooltip').hide();
});

$('.tooltip').click(function(e) {
    e.stopPropagation();
});
2 голосов
/ 15 ноября 2011

Я бы сделал что-то вроде этого:

$(document).click(function(ev) {
    if (!$(ev.target).is('.tooltip')) $('.tooltip').hide();
});
0 голосов
/ 15 ноября 2011

Вам не хватает пробела.

$('html :not(.tooltip)').click(function() {

    $('.tooltip').hide();

});

$('html:not(.tooltip)').click(function() {

Означает любой элемент HTML, который не является .tooltip

$('html :not(.tooltip)').click(function() {

Означает любой элемент в HTML, который не является .tooltip


Пример здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...