Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I run a function only when a div gets loaded?

I want to run a function only when a div gets loaded.

When I load the page, a number of files are loaded. At the end of the list, PHP echoes a div. When this one is displayed, jQuery should run a function.

I can do this with a click-event, but I want it to work automatically, without pushing a button.

This is how it works with a click:

$("#PP_end_show").live("click",function(){
    $("#PP_head_bar").slideToggle("slow");
    $("#PP_info_file_wrap").slideUp("slow");
}); 

This is the div echoed by PHP:

 <?php echo "<div id=\"PP_end_show\"></div>"; ?>

The output is generated after an AJAX call:

<form id="PP_search_input" method="post" name="search_ID" ONSubmit="xmlhttpPost('PP_search_stream_client.php', 'PP_search_input', 'PP_thumb_output', '<img src=\'images/wait.gif\'>');return false;  ">
        <input name="search_string" type="text" class="PP_input" id="search_string" value="<?php echo $_POST['search_string']; ?>"/>
        <button type="submit" class="PP_submit" id="search_submit"> search </button>

at the end of the generated output the specific div will be printed and should trigger the new jQuery function.

like image 859
Joost Avatar asked Jun 05 '11 11:06

Joost


People also ask

How do you call a function after page load?

Method 1: Using onload method: The body of a webpage contains the actual content that is to be displayed. The onload event occurs whenever the element has finished loading. This can be used with the body element to execute a script after the webpage has completely loaded.

How do you call a function after DOM is loaded?

Use DOMContentLoaded event callback You can use the DOMContentLoaded event as the trigger for executing your code. Do this by using document. addEventListener() to tie a custom function to the event. This example shows you how to define a custom function that will execute only after the DOM is loaded.

How do you call a function when HTML is loaded?

The first approach for calling a function on the page load is the use an onload event inside the HTML <body> tag. As you know, the HTML body contains the entire content of the web page, and when all HTML body loads on the web browser, it will call the function from the JavaScript.

Can I use onload with div?

The onload event can only be used on the document(body) itself, frames, images, and scripts. In other words, it can be attached to only body and/or each external resource. The div is not an external resource and it's loaded as part of the body, so the onload event doesn't apply there.


2 Answers

This is how I would tackle this issue, assuming I've understood it correctly in which the submission of the form PP_search_input, returns the html needed, in which then a the javascript code should be executed.

$('#PP_search_input').submit(function() {
    $.ajax({
         url: 'PP_search_stream_client.php',
         type: 'post',
         data: $(this).serialize(),
         success: function(html) {
             $(html).insertAfter('#whereToInsert') //change to however you want to insert the html
                    .find("#PP_head_bar").slideToggle("slow").end()
                    .find("#PP_info_file_wrap").slideUp("slow");                       
         }
        });
});
like image 120
Jason Brumwell Avatar answered Oct 08 '22 01:10

Jason Brumwell


Try putting your javascript code inside the generated ajax code.

For example if your ajax is generated from the php code

<?php echo "<div id=\"PP_end_show\"></div>"; ?>

then try smth like this

<?php 
    echo "<div id=\"PP_end_show\"></div>"; 
    echo '$(function(){$("#PP_head_bar").slideToggle("slow");';
    echo '$("#PP_info_file_wrap").slideUp("slow");});'; 
?>
like image 21
alex Avatar answered Oct 08 '22 02:10

alex