【问题标题】:jQuery UI slider with jQuery-AJAX load function not working带有 jQ​​uery-AJAX 加载功能的 jQuery UI 滑块不起作用
【发布时间】:2012-06-26 13:38:56
【问题描述】:

我有一个名为 search.html 的 html 页面,其中包含滑块,它们在此页面中完美运行。

我正在尝试使用 jQuery .load() 函数将此页面加载到另一个页面(我的主页)。

我从search.html中删除了滑块初始化,并将其放在主页面的load()回调函数中,以便在通过AJAX设置的DOM准备好后执行,如下:

$("#display_area").load("search.html","",function(response,status,xhr){ 
//#display_area is a div
$( "#sliderprice" ).slider({ max: 1000 },{ step: 10 }); 
//#sliderprice is a div
})

我的 jQuery 和 jQuery UI 的 JS 脚本包含在 search.html 页面和主页的头部。

当我加载主页时,有时,滑块可以正常工作,但有时它根本不工作(不初始化),当这种情况发生时,萤火虫的错误控制台显示: $("#sliderprice").slider 不是函数

我所做的只是刷新页面,有时可以,有时不行。

我想解决这个问题,让它一直有效。任何帮助将不胜感激。

【问题讨论】:

  • 你试过 $(document).ready(function() {}); ??
  • 是的,这听起来像是加载顺序错误。使用上述建议可能会纠正这一点。
  • 如果您的意思是将代码留在 search.html 页面中并将其放在 $(document).ready() 中,这是行不通的。 $(document).ready() 在通过 .load() 调用时永远不会触发。但是,如果您的意思是在主页中,我通过调试知道,当调用该函数时,DOM 已准备好,但它无法识别该函数。
  • 加载回调函数在jQuery API中是这样描述的:“如果提供了“完成”回调,则在后处理和HTML插入完成后执行。”所以,里面的代码回调函数,仅在 HTML 插入完成后启动(新 DOM 准备就绪)。 $(document).ready() 不需要 $(document).ready() 除了 $(document).ready() 只触发一次,它不会在新的更改后再次触发。
  • setTimeout(function(){ // slider stuff }, 300); 应该修复它。

标签: jquery-ui jquery jquery-ui-slider jquery-load


【解决方案1】:

我自己找到了解决方案,我所要做的就是从search.html 页面中删除 jQuery 和 jQuery UI 的 JS 脚本,并将其仅保留在主页中。

显然,将其放在两者中,当 .load() 函数触发时再次重新加载脚本,有时回调函数会在脚本完成重新加载之前触发。

我不知道脚本插入和加载是如何通过 .load() 或一般情况进行的,但它解决了问题。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    相关资源
    最近更新 更多