【发布时间】:2011-07-28 16:37:11
【问题描述】:
相对较新的 jQuery 用户(在传递过程中使用它,但现在真的很想理解它)。
我正在尝试使用 ajax 创建我自己的 jQuery 分页,目前我的代码如下所示:
$(document).ready(function(){
$('.pigs ul.pigspagination li a').live('click', function(e) {
e.preventDefault();
var url = $(this).attr('href');
if(url.match('^http')){
return true;
} else {
var element = $(this).closest(".pigs");
$(element).append('<div id="loading"><img alt="Loading..." src="loading.gif" /></div>');
$('#loading').fadeIn('normal');
$(element).load(url + ' ' + element);
return false;
}
});
});
代码基本上说点击“.pigs ul.pigspagination li a”从给定的url加载父元素“.pigs”,然后从url加载相同的片段。但是,这似乎不起作用:
$(element).load(url + ' ' + element);
我假设正在加载 url,然后添加一个空格,然后说明引用的元素 var element = $(this).closest(".pigs");
如果你想知道为什么我不能把 $(element).load(url + '.pigs');
这是因为我多次引用 .pigs 并且它是自动的,因为它是我编写的 php 库脚本。
html 大致如下:
<div class="pigs">
<ul class="pigs-gallery">
<li><a href="the link" target="_blank"></a></li>
...
</ul>
<ul class="pigspagination">
<li><a href="pagination link">< Prev</a></li>
...
<li><a href="pagination link">Next ></a></li>
</ul>
</div>
不过会加载更多画廊。
有什么想法吗?
-------------为 bfavaretto 编辑-------------- 试过这个
var frag = $(this).closest(".pigs").attr('id');
$(element).load(url + ' #' + frag);
它只加载了那个吸力,但删除了所有代码,我的猜测是 frag 传递得很糟糕。 .attr('id');会自己获取 id,而不是 '#' 对吗?
如果有人感兴趣的话,最后的代码:
$(document).ready(function(){
$('.pigs ul.pigspagination li a').live('click', function(e) {
e.preventDefault();
var url = $(this).attr('href');
if(url.match('^http')){
return true;
} else {
var element = $(this).closest(".pigs");
$(element).append('<div id="loading"><img alt="Loading..." src="loading.gif" /></div>');
$('#loading').fadeIn('normal');
var frag = $(this).closest(".pigs").attr('id');
$(element).load(url + ' #' + frag);
return false;
}
});
});
【问题讨论】:
-
$.load的第一个参数必须是有效的 URL。我不明白你想做什么。 ajax调用返回的HTML是否需要过滤后再插入$(element)? -
@bfavaretto $(element) 正在选择单击链接的父级,即 .pigs。因此,在链接的点击中找到最接近的 .pigs 是父级。希望这有点道理。 url是点击链接的链接。我知道这很有效,因为我以前用过它。
-
你的网址给出了下一页的结果,对吧?您是否尝试过简单地使用
$(element).load(url)? -
@bfavaretto 我需要该页面的片段,因为我在每个页面上都有多个具有相同类的画廊,所以我希望使用 $(this) 我可以用一些方法欺骗它只给我$(this) 链接的父级。我只是想做一些 jquery 不能做的事情吗?
-
嘿,等等,我注意到了别的东西:你有
pagination link作为你的分页链接上的href。这些不是有效的 URL,不能用于 ajax 调用,例如$.load。那么,您是否有返回画廊下一页的有效网址?它在哪里?
标签: jquery ajax variables load fragment