views:

287

answers:

3

I'm looking for a way to automatically "click" an item when the page loads.

I've tried using

$("document").ready(function() {
    $("ul.galleria li:first-child img").trigger('click');
});

but it doesn't seem to work? However, when I enter $("ul.galleria li:first-child img").trigger('click'); into Firebug's console and run the script, it works.

Can the trigger event be used on load?

+2  A: 
$(function(){

    $(selector).click();

});
Steven Xu
API reference: http://docs.jquery.com/Events/click. Note that `$(callback)` is equivalent to `$("document").ready(callback);`
Steven Xu
Same effect - works in Firebug, but when entered to my scripts file, it doesn't. Firebug doesn't give any errors as well. Does it matter there are other scripts in the file in $(function() { .. }); as well?
Justine
A: 
$("document").ready({
    $("ul.galleria li:first-child img").click(function(){alert('i work click triggered'});
}); 

$("document").ready(function() { 
    $("ul.galleria li:first-child img").trigger('click'); 
}); 

just make sure the click handler is added prior to the trigger event in the call stack sequence.

  $("document").ready(function() { 
        $("ul.galleria li:first-child img").trigger('click'); 
    }); 

   $("document").ready({
        $("ul.galleria li:first-child img").click(function(){alert('i fail click triggered'});
    }); 
Mark Schultheiss
A: 

The click handler that you are trying to trigger is most likely also attached via $(document).ready(). What is probably happening is that you are triggering the event before the handler is attached. The solution is to use setTimeout:

$("document").ready(function() {
    setTimeout(function() {
        $("ul.galleria li:first-child img").trigger('click');
    },10);
});

A delay of 10ms will cause the function to run immediately after all the $(document).ready() handlers have been called.

noah
That's exactly what I was looking for. Thank you!
Justine