jQuery, пишущий оператор if с .bind vs .focus ищет альтернативный способ выполнения - PullRequest
1 голос
/ 26 июня 2010

Краткий обзор, этот код прекрасно работает и выполняет то, что предполагается, за исключением переключателей на webkit.

$('input, textarea, select').focus(function(){
    $(this).parents('.row').addClass("hilite");
        }).blur(function(){
            $(this).parents('.row2').removeClass("hilite");
});

Я провел несколько исследований и проверил несколько раз, используя

$('input, textarea, select').bind('change'(){
    $(this).parents('.row').addClass("hilite");
        }).blur(function(){
            $(this).parents('.row').removeClass("hilite");
});

Я могу заставить его работать с переключателями webkit, но он не распознает размытие и поэтому не удаляет hilite. Так есть альтернативный способ написать это, так что он удалит класс на Blur vs Mouseleave (который работает). Как всегда, СПАСИБО ЗА ПРЕДЕЛА!

Ответы [ 2 ]

1 голос
/ 26 июня 2010

Попробуйте дать кнопкам :radio событие щелчка, чтобы вызвать фокусировку. Кажется, для работы в webkit.

Попробуйте: http://jsfiddle.net/5dDQn/

$(':radio').click(function() {
    $(this).focus();
});
0 голосов
/ 26 июня 2010

Этот подход, вероятно, не считается «красивым», но я бы попробовал так:

$('input, textarea, select')
  .focus(function() {
    $(this).parents('.row').addClass('hilite');
    if ($(this).is(':radio')) {
      $(this).one('mouseleave', function () {
        $(this).parents('.row').removeClass('hilite');
      });
    }
  })
  .blur(function() {
    $(this).parents('.row2').removeClass('hilite');
  });

Это зависит от того, что, как я полагаю, вы указали - переключатели примут фокус, не вызывают размытия, но отпуск мышью работает правильно.

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