我正在使用jQuery
和YQL
来获取网站的内容并在页面上显示某个元素,在本例中为table
元素。我还使用jQuery QuickSearch插件设置了搜索功能。
这很有效,现在解决了这个问题...
似乎在AJAX
内容getter获取内容之前加载搜索脚本。我认为该脚本然后缓存数据,因此搜索更容易。因为它是在内容存在之后加载的,所以它不搜索任何东西而且它不起作用。有没有办法加载搜索脚本 AFTER 加载AJAX
内容?
我已经尝试通过jQ中的ready
函数调用它:
$(document).ready(function() {
但是在内容加载之前仍然会加载。我的AJAX
脚本如下:
<script type="text/javascript">
$(document).ready(function () {
var container = $('#content');
function doAjax(url) {
if (url.match('^http')) {
$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
"q=select%20*%20from%20html%20where%20url%3D%22"+
encodeURIComponent(url)+
"%22&format=xml'&callback=?",
function (data) {
if (data.results[0]) {
var fullResponse = $(filterData(data.results[0])),
justTable = fullResponse.find("table");
container.append(justTable);
} else {
var errormsg = '<p>Error: could not load the page.</p>';
container.html(errormsg);
}
});
} else {
$('#content').load(url);
}
}
function filterData(data) {
data = data.replace(/<?\/body[^>]*>/g, '');
data = data.replace(/[\r|\n]+/g, '');
data = data.replace(/<--[\S\s]*?-->/g, '');
data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g, '');
data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g, '');
data = data.replace(/<script.*\/>/, '');
data = data.replace(/<img[^>]*>/g, '');
return data;
}
doAjax('url_goes_here');
});
</script>
答案 0 :(得分:12)
不确定我是否真的得到了这个问题,但是在内容加载Ajax之后加载脚本你可以这样做:
$.ajax({
url: url,
data: data,
success: function() {
//success loading content
},
error: function() {
//error loading content
},
complete: function() {
$.getScript("/scripts/mysearchscript.js", function() {
alert('loaded script and content');
});
}
});
答案 1 :(得分:0)
“如果在初始化DOM之后调用.ready(),则会立即执行传入的新处理程序。” - http://api.jquery.com/ready/
修改强>
我想我可能误解了你的问题,对不起。你是说搜索尝试在表完全加载之前搜索?我认为你在页面完成加载之前尝试搜索。您是否尝试使用附加到.load()的回调函数,或者只是在container.append()之后?
加载后
$('#content').load(url,callSearchFunction());
你可以在追加
之后更简单地做到这一点 container.append(justTable);
callSearchFunction();
答案 2 :(得分:0)
$('.container').load('yourPage.html',function(){
//Do whatever you want here
});
您可以在jquery方法.load()
上传递一个类似参数的匿名函数当ajax请求完成时,该函数将执行