JQuery и Safari

У меня проблема с JQuery и Safari (версия для Windows). Код работает в FF / IE7 / Chrome, но не в Safari.

У меня есть простой <li>, в который встроен <div> - щелчок по <li> должен открыть скрытый div, но не в Safari.

HTML:

<ul>
<li>something</li>
<li>something2</li>
<li class="more">
        <a href="" class="moreFacetsLink">Click to see more options</a>
        <div class="moreFacets">bunch of text</div>
</li>
</ul>

Вот код JQuery:


     $('.moreFacetsLink').click(function () {
$(this).siblings('div').toggle(); });

Есть мысли о том, что здесь может происходить? Опять же - похоже, это работает во всех других браузерах!

Я новичок в JQuery.

Спасибо!


person Community    schedule 14.11.2008    source источник


Ответы (4)


Насколько точна вставка HTML?

Вы никогда не закрывали свой тег привязки moreFacetsLink, что, вероятно, заставляет Safari думать, что он был неявно закрыт, а «связка текста» окружена дополнительным тегом привязки без HREF-less Class -less Unclosed ... о чем свидетельствует факт что это:

$(".moreFacetsLink").click(function () {
    $(this).siblings("a").children("div").toggle();
});

... делает то, что вы хотите с отправленной разметкой.

Закройте тег привязки должным образом (бонусные баллы за включение атрибута href), и все будет в порядке.

person Pseudo Masochist    schedule 14.11.2008
comment
Извините - вручную набрал указанный выше html, я исправил синтаксические ошибки. HTML в моем коде правильный. - person ; 15.11.2008

href = "" перезагружает вашу страницу в сафари. Я бы попытался использовать css, чтобы подчеркнуть и стилизовать его, и отбросить пустой href.

person cobbal    schedule 18.03.2009

Я почти уверен, что вам нужно return false; из функции щелчка, чтобы отменить щелчок по ссылке.

person Scott Rippey    schedule 08.10.2010

Сначала вам нужно проверить, выполняет ли браузер обратную передачу, и если это правда, вы можете избежать этого следующим образом

$('.moreFacetsLink').click(function (e) {
    e.preventDefault(); // this prevent postback

    $(e.target).siblings('div').toggle();
});

попробуйте это: $(e.target) вместо этого $(this)
это могло бы быть иначе

надеюсь это поможет

person Edgar    schedule 04.05.2011