2009-08-02 6 views
0

Я тестирую некоторые jQuery в Chrome/Safari, и я просто не могу решить эту ошибку. В основном, я делаю:jQuery .hide() в Safari?

jQuery(':radio', '.some_class') 
      .change(function() { 
       jQuery('.special_class').show(); 
      }) 
      .blur(function() { 
       jQuery('.special_class').hide(); 
     }); 

А я вообще не люблю? Даже пытался

jQuery('.special_class').css('display','none'); 

и что AINT помощь ни один - «.some_class» показывает хорошо, но не хочет, чтобы исчезнуть?

Edit: HTML код является:

<div class="some_class"> 
    <label for="button"><input type="radio" name="style" id="button" value="button" />Button</label> 
</div> 

    <div class="special_class">Hello There!</div> 

Edit 2: Что еще страннее, что когда я "закладка" - это работает? но используя «кликнуть» его нет?

Любые идеи?

+0

Каков HTML код, на который работает этот код. – MitMaro

+0

hey mitmaro - обновлено для ya – 2009-08-02 17:23:45

ответ

1

Событие размытия не означает «отменено». Это означает «потерянный фокус клавиатуры». Вам нужно будет добавить дополнительную логику для вашего обработчика событий изменений, чтобы определить, был ли переключатель выбран или отменен.

+0

эй спасибо duskwuff - любые идеи, что можно добавить? – 2009-08-02 17:38:09

0

Я думаю, что есть проблема с событием размытия. Посмотрите here

Safari и Chrome не поддерживают эти события по ссылкам и/или полям формы при любых обстоятельствах.

0

Я использовал немного дополнительных css, чтобы обойти эту проблему на одном из моих сайтов. Когда скрывается элемент, попробуйте этот CSS (либо путем добавления/удаления дополнительный класс с этими атрибутами, или с помощью JQuery .css)

display:none; opacity:0; pointer-events:none; 

и показать

display:block; opacity:1; pointer-events:auto; 

Иногда я также считаю, что просто display: none/block недостаточно для Safari, но это довольно удобно.