Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery(document).ready()赢得';不能使用AJAX加载的jQueryUI小部件_Ajax_Jquery Ui_Jquery - Fatal编程技术网

jQuery(document).ready()赢得';不能使用AJAX加载的jQueryUI小部件

jQuery(document).ready()赢得';不能使用AJAX加载的jQueryUI小部件,ajax,jquery-ui,jquery,Ajax,Jquery Ui,Jquery,我正在使用jQuery.ajax()方法加载一些代码。在这段代码中,我想要一些jQueryUI小部件(滑块和日历),但它们不会出现在IE中 这里有一些示例代码,您可以帮助我理解我的错误所在 加载jQueryUI小部件的代码 <script> jQuery(document).ready(function(){ jQuery.ajax({ type:'post', url: 'file.php', success: function (data) {

我正在使用jQuery.ajax()方法加载一些代码。在这段代码中,我想要一些jQueryUI小部件(滑块和日历),但它们不会出现在IE中

这里有一些示例代码,您可以帮助我理解我的错误所在

加载jQueryUI小部件的代码

<script>
jQuery(document).ready(function(){
  jQuery.ajax({
    type:'post',
    url: 'file.php',
    success: function (data) {
     jQuery('.somediv').empty().html(data); 
    }
  });
});
</script>
<script>
jQuery(document).ready(function(){
  jQuery('.datepicker-div').datepicker(someoptions);
  jQuery('.slider-div').slider(someoptions);
});
</script>
<div class="datepicker-div">
<div class="slider-div">

jQuery(文档).ready(函数(){
jQuery.ajax({
类型:'post',
url:'file.php',
成功:功能(数据){
jQuery('.somediv').empty().html(数据);
}
});
});
加载并应初始化jQueryUI小部件的代码

<script>
jQuery(document).ready(function(){
  jQuery.ajax({
    type:'post',
    url: 'file.php',
    success: function (data) {
     jQuery('.somediv').empty().html(data); 
    }
  });
});
</script>
<script>
jQuery(document).ready(function(){
  jQuery('.datepicker-div').datepicker(someoptions);
  jQuery('.slider-div').slider(someoptions);
});
</script>
<div class="datepicker-div">
<div class="slider-div">

jQuery(文档).ready(函数(){
jQuery('.datepicker div').datepicker(someoptions);
jQuery('.slider div').slider(someoptions);
});
你可以看到它应该非常简单。对于FF,它可以正常工作,但对于IE则不行


可能与document ready语句无关?

只需在成功事件中调用初始值设定项:

<script>
jQuery(document).ready(function(){
  jQuery.ajax({
    type:'post',
    url: 'file.php',
    success: function (data) {
      jQuery('.somediv').empty().html(data); 
      jQuery('.datepicker-div').datepicker(someoptions);
      jQuery('.slider-div').slider(someoptions);
    }
  });
});
</script>
然后让您的成功调用它,以及
ready()
ebent:

<script>
jQuery(document).ready(function(){
  jQuery.ajax({
    type:'post',
    url: 'file.php',
    success: function (data) {
     jQuery('.somediv').empty().html(data); 
     Initialize();
    }
  });
});
</script>

jQuery(文档).ready(函数(){
jQuery.ajax({
类型:'post',
url:'file.php',
成功:功能(数据){
jQuery('.somediv').empty().html(数据);
初始化();
}
});
});
更新

我已经更仔细地阅读了你的问题,现在我完全理解了。您的
ready()
在加载的代码中。那么您应该使用jQuery的:

脚本执行 使用不带后缀选择器的URL调用.load()时 表达式,则在创建脚本之前将内容传递到.html() 远离的。这将在脚本块被丢弃之前执行它们。如果 .load()是通过附加到URL的选择器表达式调用的, 但是,在更新DOM之前,脚本会被剥离, 因此没有执行。两种情况的示例如下所示:

在这里,作为文档的一部分加载到#a中的任何JavaScript都将 成功执行

$('a').load('article.html')


尝试在附加html之前删除脚本,然后再将其添加回去

var outHTML = data.replace(/<script>/ig,"<div class='script'>").replace(/<\/script>/ig,"</div>");
outHTML = $(outHTML);
var script = outHTML.find("div.script").detach();
$(".somediv").html(outHTML);
var s = document.createElement("script");
s.textContent = script.text();
document.body.appendChild(s);
var outHTML=data.replace(//ig,”).replace(//ig,”);
outHTML=$(outHTML);
var script=outHTML.find(“div.script”).detach();
$(“.somediv”).html(outHTML);
var s=document.createElement(“脚本”);
s、 textContent=script.text();
文件。正文。附录子项;
编辑:


.find(“div.script”)
可能需要根据您的ajax请求返回的内容更改为
.filter(“div.script”)

好的,我没有找到解决问题的方法,但我找到了解决方法

解决方法非常简单。因为在除IE之外的所有浏览器中,通过ajax加载脚本都可以正常工作,所以我们必须识别IE并将行为更改为不加载脚本,而是重定向到我想要加载的站点。我在Joomla2.5中完成了这一切,所以有一些工作要做,但基本上是以下代码解决了问题

// preparing the url
// check for ie
if (jQuery.browser.msie) {
  window.location(url);
} else {
  // do the ajax
}

感谢您的帮助,但滑块和日历仍无法在IE中显示。在FF中,加载时一切正常()尝试将
移动到加载HTML的末尾,不要嵌入
ready()
,这意味着它将是普通的
jQuery('.datepicker div')。datepicker(someoptions);jQuery('.slider div').slider(someoptions)Bevore正在尝试,我想知道为什么会这样。很抱歉,我不理解这样做的目的:基本上,它可以确保脚本在您附加的DOM就绪之后而不是之前运行。script.text()为空,其中包含find()和filter()。