我使用jQuery
和YQL
来获取网站的内容,并在页面上显示某个元素,在此例中为table
元素。我也有使用jQuery QuickSearch插件设置的搜索功能。AJAX加载内容后加载脚本?
这个伟大的工程,现在的问题...
看来,搜索脚本加载AJAX
内容的getter获取内容之前。我认为脚本会缓存数据,以便搜索更容易。由于它在内容存在之后加载,它不搜索任何内容,并且不起作用。有没有什么办法加载搜索脚本AFTERAJAX
内容被加载?
我已经试图通过在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>
我试图解释这是什么意思。我应该首先调用'.ready()',然后调用AJAX,然后搜索将在AJAX加载后加载? – Charlie 2012-01-11 01:33:57
这意味着如果你正在调用体内脚本中的.ready()函数,那么它立即运行,应该从头开始运行。 – 2012-01-11 02:35:02
这两个脚本都在头上。 – Charlie 2012-01-11 02:38:20