我想只在div加载时运行一个函数。
加载页面时,会加载许多文件。在列表的末尾,PHP回应了一个div。当显示这个时,jQuery应该运行一个函数。
我可以通过点击事件来完成此操作,但我希望它能够自动运行,而无需按下按钮。
这就是点击的方式:
$("#PP_end_show").live("click",function(){
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
});
这是PHP回应的div
:
<?php echo "<div id=\"PP_end_show\"></div>"; ?>
在AJAX调用之后生成输出:
<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>
在生成的输出结束时,将打印特定的div,并应触发新的jQuery函数。
答案 0 :(得分:10)
这就是我要解决这个问题的方法,假设我已正确理解PP_search_input表单的提交,返回所需的html,然后应该执行javascript代码。
$('#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");
}
});
});
答案 1 :(得分:5)
尝试将javascript代码放在生成的ajax代码中。
例如,如果你的ajax是从php代码生成的
<?php echo "<div id=\"PP_end_show\"></div>"; ?>
然后像这样尝试smth
<?php
echo "<div id=\"PP_end_show\"></div>";
echo '$(function(){$("#PP_head_bar").slideToggle("slow");';
echo '$("#PP_info_file_wrap").slideUp("slow");});';
?>
答案 2 :(得分:4)
您可以使用livequery plugin
然后您将按如下方式使用它:
$('#PP_end_show').livequery(function(){
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
});
当选择器中的元素(#PP_end_show
)添加到DOM时,函数中的代码将执行
答案 3 :(得分:4)
为什么不将您的javascript与DIV代码一起回显?
您可以使用PHP来回复Javascript,如下所示:
在您的代码之后:
<?php echo "<div id=\"PP_end_show\"></div>"; ?>
写下这个:
echo "<script type='text/javascript'>
$('#PP_head_bar').slideToggle('slow');
$('#PP_info_file_wrap').slideUp('slow');
";
echo "</script>";
这应该有用。
答案 4 :(得分:3)
在JS中,将要执行的代码包装在函数中。即。
function showInfoBlock() {
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
}
在PHP中,写出在写出PP_end_show div之后调用该函数所需的JS。即。
<?php echo "<div id=\"PP_end_show\"></div><script>$(function() { showInfoBlock(); })();</script>"; ?>
答案 5 :(得分:3)
这就是你所要求的:
(function($){
var checkForEndInterval = window.setInterval(function(){
if ($('#PP_end_show').length) {
// stop interval
window.clearInterval(checkForEndInvertal);
// call your code now
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
}
},200);
})(jQuery);
然而,这不是一个好主意,因为它的愚蠢和你要求的暗示你不理解,但这就是你在这里的原因。由于您已经知道调用AJAX的时间,因此请明确调用它并附加成功处理程序。
$.ajax({
/* your other setup code here */
success : function(data) {
// run your code
}
});
如果你没有像你说的那样做AJAX,我会在输出的末尾添加一个脚本标记,并让它将代码称为最简单的方法。即使如此,您仍然可以使用jQuery.load方法(非事件),默认情况下,它会从您的响应中执行JavaScript。
快乐的编码。
答案 6 :(得分:2)
保持jquery live-click-function,因为它是
&安培;在php中运行以下代码
<?php
echo "<div id=\"PP_end_show\"></div>";
echo "$(function(){ $(\"#PP_end_show\").click(); });";
?>
答案 7 :(得分:2)
将直播事件绑定到由文档触发的自定义事件:
$(document).trigger('echo');
$("#PP_end_show").live("echo", function(){
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
});
<强>参考强>
答案 8 :(得分:2)
$.ready(function(){
$("#wrapper").add("div").attr('id','PP_end_show');
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
});
<div id='wrapper'>
</div>
答案 9 :(得分:1)
Jason Brumwell 输入正确答案,您也可以使用JQuery的$.when
功能。
答案 10 :(得分:1)
如果想要在所需的div加载后执行的操作绑定到click事件,只需在ajax请求的末尾触发单击,例如:
$.ajax({
url:'whatever.php',
type:'post', //guessing obviously
success: function(data){
$('#PP_end_show').click(); //etc
}
});
这些家伙是对的,你这是所有向后的伙伴
答案 11 :(得分:0)
它必须是那个确切的div吗?在我看来,你应该只是在加载文件时执行该功能。这样你就知道你所有的元素都被加载了。
$(function()
{
// This function is executed when the DOM is ready, including that last div.
// Could be that images are still loading, but your code usually won't depend on that.
}
答案 12 :(得分:0)
试试这个,
if(window.isBodyLoaded){
try{
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
}catch(d){
alert(d)
}
}
答案 13 :(得分:-4)
使用回调函数。 它是一个在您的事件处理后立即触发的功能。 所以对于Jquery:
$("#PP_end_show").live("click",function(){
$("#PP_head_bar").slideToggle("slow");
$("#PP_info_file_wrap").slideUp("slow");
}, myCallback());
function myCallback(){
//Do what ever you want to happen after
//the div creationin this function
}
而且我认为应该这样做