我有一个first.js文件包含在页面index.php中,有类似这样的东西:
$(function(){
$("#my_slider").slider("value", 10);
});
Run Code Online (Sandbox Code Playgroud)
而在index.php中我有一些动态创建的滑动:
<?php function slidders($config, $addon)
{
$return = '
<script type="text/javascript">
$(function() {
$("#slider_'.$addon['p_cod'].'").slider({
min: '.$config['min'].',
max: '.$config['max'].',
step: '.$config['step'].',
slide: function(event, ui) {
$("#cod_'.$addon['p_cod'].'").val(ui.value);
$(".cod_'.$addon['p_cod'].'").html(ui.value+"'.@$unit.'");
},
change: function(event, ui) {
$("#cod_'.$addon['p_cod'].'").change();
}
});
$("#cod_'.$addon['p_cod'].'").val($("#slider_'.$addon['p_cod'].'").slider("value"));
$(".cod_'.$addon['p_cod'].'").html($("#slider_'.$addon['p_cod'].'").slider("value")+"'.@$unit.'");
});
</script>';
return $return;
} ?>
Run Code Online (Sandbox Code Playgroud)
问题是,因为我的index.php滑块在我的first.js之后被实例化我无法在那里设置一个值,是否有任何事件,比如"毕竟$(document).ready()已经运行"我可以在first.js中使用来操作index.php中创建的滑块?
Joh*_*ock 74
不知道如何判断最后一个$(document).ready()函数何时被触发,但$(window).load()函数在触发之后触发$(document).ready()
Tha*_*eli 63
最安全的做法是调用$(window).load() 内部 $(document).ready().这将保留所有情况下的执行顺序,确保$(window).load()在所有$(document).ready()脚本完成之前不会传递运行最后一个代码.如果没有这个,在某些浏览器中$(window).load()可能存在竞争条件,可能在所有$(document).ready()脚本启动之后但在所有$(document).ready()脚本完成之前调用.
$(document).ready(function() {
$(window).load(function() {
// this code will run after all other $(document).ready() scripts
// have completely finished, AND all page elements are fully loaded.
});
});
Run Code Online (Sandbox Code Playgroud)
Mat*_*bon 15
基于Ian的回答,我想出了这个(测试 - 工作):
jQuery(document).ready(function() {
jQuery(document).ready(function() {
/* CODE HERE IS EXECUTED AS THE LAST .ready-CALLBACK */
});
});
Run Code Online (Sandbox Code Playgroud)
当然这是因为现成的回调按照它们分配的顺序被调用.目前,当调用外部就绪回调时,所有其他脚本应该已经分配了它们的就绪回调.所以,你的分配准备的回调(内一个)现在会导致你是最后一个.
Tob*_*oby 12
尝试这个巧妙的技巧/粗暴黑客:
$(function(){
$(function(){
$("#my_slider").slider("value", 10);
});
});
Run Code Online (Sandbox Code Playgroud)
看起来很蠢吧?它的工作原理是因为jQuery按照添加的顺序执行事件处理程序.在事件处理程序中添加一个事件处理程序的时间要尽可能晚(只是确保你没有意外地在任何一个滑块上执行此操作;这很容易).
概念证明. http://jsfiddle.net/9HhnX/
| 归档时间: |
|
| 查看次数: |
86606 次 |
| 最近记录: |