Question: I have a function that shows a menu when clicking on it, and I want it to disappear after 5 seconds. This is my javascript - it works properly on desktop browser but it doesn't disappear on the mobile ones.

```
$(function() {
    $('#prod_btn').click(function() {
        $(this).addClass('selected').next('ul').css('display', 'block');
        setTimeout(hideMenu, 5000);
    });
});

function hideMenu() {
    $('#prod_btn').removeClass('selected').next('ul').css('display', 'none');
}

```

Where is the problem?

Thanks

Answer: 
I've just had the same problem. My code is running great in any browser on my Mac, but on iOs devices it doesn't work.

I use ".bind(this)" on my timeout function and that is what is causing the problem for me.
When I extend the function object with ".bind" in my script it works like a charm.

My code is something like this:

```
searchTimeout = setTimeout(function() {
...
}.bind(this),250);

```

For this to work on iOs devices I (like mentioned above) just added this:

```
Function.prototype.bind = function(parent) {
    var f = this;
    var args = [];

    for (var a = 1; a < arguments.length; a++) {
        args[args.length] = arguments[a];
    }

    var temp = function() {
        return f.apply(parent, args);
    }

    return(temp);
}

```

I don't see any .bind on your setTimeout, but for others with the same problem this may be the issue. That's why I'm posting :-)
I moved your example to a jsbin, and it's working on my iphone 4.

Please test it out going here from your devices: <http://jsbin.com/asihac/5>

You can see the code here <http://jsbin.com/asihac/5/edit>

The example is using jQuery - latest and I only added the required css class.