此代码适用于可过滤的投资组合。最初我有PHP用于下一个和上一个链接,但是当过滤投资组合时,它找不到下一个过滤的对象。我发现过滤器将列表项放在DOM中,因此我使用next()来获取结果。但是,链接没有正确加载。它是加载thickbox的同一页面上的链接。我已经成功地在新窗口中打开并附加到窗口URL,但没有骰子试图让它工作。这是所述投资组合的地址。
http://blurosemedia.com/portfolio
$(document).ready(function(){
$(".portfolio-next").click(function(e) {
var $this = $(this);
if($this.data('clicked', true)) {
var namer = $(this).attr('value');
var url = $(this).parents('body').children('#wrap').children('#inner').children('#content-sidebar-wrap').children('#content').children('ul#portfolio-list').children().next('.portfolio-item-' + namer).nextAll('.portfolio-item:not(:.isotope-hidden)').attr('id');
window.location.load(url);
e.preventDefault();
}
});
});
我不得不一直爬到dow树上,因为thickbox代码会自动显示在页面底部。我认为一个可能的解决方案是为了让胖箱加载你必须有class =“thickbox”。如果我能以某种方式说load(url).withClass('thickbox')它可能会起作用,但我确定语法应该如何。
答案 0 :(得分:0)
你有很多东西可以解决,但这里有一些信息可以帮助你走上正确的道路:
window.location.load 没有退出,您要找的是window.location.href
:
请参阅文档from MDN
请参阅文档from MSDN
例如, window.location.href = url;
<强>另外,强>
ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。
您正在使用以#
开头的ID设置li。
有关其他信息,请参阅this link!
解决方法:
<li id="#TB_inline?height=450&width=900&inlineId=id-3" class="portfolio-item design portfolio-item-3 isotope-item">...</li>
可以:
<li class="portfolio-item design portfolio-item-3 isotope-item">
<span style="display:none;">#TB_inline?height=450&width=900&inlineId=id-3</span>
</li>
您无缘无故地上下移动DOM。由于您的商品(#portfolio-list
)的包装上有ID,因此您可以定位并从那里开始!
同时强>
('.portfolio-item:not(:.isotope-hidden)')
应该是:
('.portfolio-item:not(.isotope-hidden)')
使用 :not(:something)
,用于定位具有特定状态的元素,例如:checked
有关详细信息,请参阅this Link!
由于变量namer
获取已打开项目的当前ID,并且您想要传递到下一个项目,您的代码变为:
$(document).ready(function(){
$(".portfolio-next").click(function(e) {
e.preventDefault();
var $this = $(this);
var namer = parseInt($this.attr('value'))+1;
var url = $this.attr("href");
url = url.substring(0, url.indexOf('=id'));
window.location.href(url+"=id"+namer);
});
});
请参阅此Fiddle Example!
请注意,标记a
没有任何属性value
,因此标记无效。
有关详细信息,请参阅this link。
答案 1 :(得分:0)
谢谢你的详细回复。这是我第一次真正深入了解jQuery。这就是我想出的:
<?php echo '<a href="#TB_inline?height=450&width=900&inlineId=id-" class="thickbox
portfolio-previous" value="'; echo $portnum; echo '">Previous</a>';echo '<a
href="#TB_inline?height=450&width=900&inlineId=id-" class="thickbox portfolio-
next" value="'; echo $portnum; echo '">Next</a>';?>
//Next Portfolio Button
$(".portfolio-next").hover(function(e) {
e.preventDefault();
var $this = $(this);
//Get the value of the link which is the same value as the current list item
var namer = parseInt($this.attr('value'));
//Find the current div in the dom and find the list item id next to it
var falcon = $('ul#portfolio-list').children('.portfolio-item-' +
namer).nextAll('.portfolio-item:not(:.isotope-hidden)').attr('id');
//Find the href tag id and add the value from falcon
var url = $this.attr("href");
url = url.substring(0, url.indexOf('=id'));
if(falcon === undefined) {
var falcon2 = $('ul#portfolio-list').children('.portfolio-item-' +
namer).prevAll('.portfolio-item:not(:.isotope-hidden):first').attr('id');
$(this).attr('href', url+"=id-"+falcon2);
}else{
$(this).attr('href', url+"=id-"+falcon);
return;
}
});
//Previous Portfolio Button
$(".portfolio-previous").hover(function(e) {
e.preventDefault();
var $this = $(this);
//Get the value of the link which is the same value as the current list item
var namer = parseInt($this.attr('value'));
//Find the current div in the dom and find the list item id next to it
var falcon = $('ul#portfolio-list').children('.portfolio-item-' +
namer).prevAll('.portfolio-item:not(:.isotope-hidden)').attr('id');
//Find the href tag id and add the value from falcon
var url = $this.attr("href");
url = url.substring(0, url.indexOf('=id'));
if(falcon === undefined) {
var falcon2 = $('ul#portfolio-list').children('.portfolio-item-' +
namer).nextAll('.portfolio-item:not(:.isotope-hidden):last').attr('id');
$(this).attr('href', url+"=id-"+falcon2);
}else{
$(this).attr('href', url+"=id-"+falcon);
return;
}
});
它很有效,但任何关于如何优化的建议都将受到高度赞赏。