jquery .not () не работает - PullRequest
       43

jquery .not () не работает

0 голосов
/ 29 июля 2011
$(document).not('.myform-links').click(function (event) {                    
     $('.myform-links').toggle();
});

В какой-то момент щелкается элемент, который переключает элемент .myform-links div для отображения.

Этот элемент использует плагин jquery CenterIt для создания divэлемент с плавающей точкой по центру вверху страницы.

Я пытаюсь использовать приведенный выше код для обнаружения клика в любом месте, которое не находится в плавающем элементе, чтобы он мог переключиться обратно в свое скрытое состояние.

РЕДАКТИРОВАТЬ:

$(document).not('.myform-links').click(function() {                    
    $('.myform-links').toggle();
});
$(document).ready(function () {
    $('.myform-links').CenterIt();
    $('.myform-links').hide();
});
$('#toggle').live('click',function() {
    $('.myform-links').toggle();
});

Это весь код, который я использую для управления элементом, и первый опубликованный код - это код, который не работает.

основываясь на документации .not () , я не вижу причин, почему это не должно работать.Может показаться, что либо элемент был изменен с помощью CenterIt (), либо в созданной объектной модели отсутствуют ссылки .myform.

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Ваш синтаксис не совсем правильный. Вы должны использовать not (); функция в селекторе, т.е.

$(document:not('.myform-links')).click(function() {                    
     $('.myform-links').toggle();
});

И если вы не собираетесь повторно использовать событие, вам не нужно указывать его в функции.

0 голосов
/ 29 июля 2011

Этот код не будет работать, потому что событие щелчка пузыря до документа, и оно вызовет событие. Попробуйте следующий код

$(document).click(function (event) {  
     $('.myform-links').toggle();
});

$('.myform-links').click(function(e){
   e.stopPropagation();
});
$('#toggle').live('click',function(e) {
    $('.myform-links').toggle();
    e.stopPropagation();
});
...