jQuery hide/show Safari Bug

March 17th, 2008

I’ve noticed problems in Safari with the hide/show methods of jQuery on and off for quite a while now. Basically they don’t work. Correct me if i’m wrong. This behaviour also extends to the fadeIn/Out methods.

The problem can be circumvented to applying css rules directly to the element(s) in question.

// This will fail in Safari
$(element).hide()
// But this will work
$(element).css('display','none')

A quick google reveals that lot’s of people have come across this same issue, but no definitive answers.

Posted in Web | Tagged with: ,

6 Responses

  1. Jamie

    Update: Ticket opened here http://dev.jquery.com/ticket/3038

  2. Gozzy

    I came experienced this error too after an animate where i get the element through the animate callback.
    el.hide(), el.css(‘display’, ‘none’) and el.style.display = ‘none’;
    did not work in safari or firefox

    I fixed it using el.fadeOut(0) there still is a fadeOut in firefox and safari but it works without removing the text (.empty() works without an delay but causes you to lose your data.)

  3. Sean

    This fixed my problem when the element I was attempting to show and/or hide was already hidden by its parent.

    Thanks for the tip.

  4. Rija

    It is 2010!

    I met this bug in Safari and Google Chrome, so with WEBKIT

    In fact, I don’t use directyle show(“slow”) but an accordion made by http://www.marghoobsuleman.com/mywork/jcomponents/accordion-common/accordion.html

    In fact, have you found the solution of your problem?

  5. Icoperlefealf

    Greetings members,

    Who doesn’t need luxorious treatment while on holiday? Luxurious appointments, five-star meals, and amazing activities are available on all the ships from Crystal Cruises and Oceania Cruises. Tauck Tours features unique vacations at 98 unique places. When your family use Elite Cruise & Travel, your family can rest assured that your holiday will be just what you imagined.

  6. Danny

    I was having the same problems with Safari. el.fadeOut(0) worked for me in Safari. el.css(‘display’, ‘none’) did not.

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.