Как вызвать функцию с размытием jquery, НЕ щелкнув по ссылке? - PullRequest
1 голос
/ 29 октября 2010

У меня есть небольшой скрипт jquery:

$('.field').blur(function() {
    $(this).next().children().hide();
});

Скрытые дочерние элементы содержат некоторые ссылки. Это делает невозможным переход по ссылкам (потому что они скрыты). Что является подходящим решением для этого?

это так близко, как я получил:

$('.field').blur(function() {
       $('*').not('.adress').click(function(e) {
            foo = $(this).data('events').click;
            if(foo.length <= 1) {
//             $(this).next('.spacer').children().removeClass("visible");
            }
            $(this).unbind(e);
        });
});

Предполагается, что незакомментированная строка относится к размытому полю, но, похоже, оно не работает. Есть предложения?

Ответы [ 3 ]

1 голос
/ 29 октября 2010

Вы можете задать небольшую задержку, например:

$('.field').blur(function() {
  var kids = $(this).next().children();
  setTimeout(function() { kids.hide(); }, 10);
});

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

0 голосов
/ 20 ноября 2010

Вот как я это сделал:

var curFocus;
    $(document).delegate('*','mousedown', function(){
        if ((this != curFocus) && // don't bother if this was the previous active element                
            ($(curFocus).is('.field')) && // if it was a .field that was blurred
            !($(this).is('.adress'))
        ) {
            $('.' + $(curFocus).attr("id")).removeClass("visible"); // take action based on the blurred element
        }

        curFocus = this; // log the newly focussed element for the next event
    });
0 голосов
/ 31 октября 2010

I считаю, вы можете использовать .not ('a') в этой ситуации:

$('.field').not('a').blur(function() {
    $(this).next().children().hide();
});

Это не проверено, поэтому я не уверен, будет ли это работать илинет.

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