在同一页面jQuery中加载链接

时间:2012-05-27 02:27:11

标签: jquery load window

此代码适用于可过滤的投资组合。最初我有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')它可能会起作用,但我确定语法应该如何。

2 个答案:

答案 0 :(得分:0)

你有很多东西可以解决,但这里有一些信息可以帮助你走上正确的道路:

1)

window.location.load 没有退出,您要找的是window.location.href

请参阅文档from MDN

请参阅文档from MSDN

例如, window.location.href = url;


2)

<强>另外,

  

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>

3)

您无缘无故地上下移动DOM。由于您的商品(#portfolio-list)的包装上有ID,因此您可以定位并从那里开始!

同时

('.portfolio-item:not(:.isotope-hidden)')

应该是:

('.portfolio-item:not(.isotope-hidden)')

使用 :not(:something),用于定位具有特定状态的元素,例如:checked

有关详细信息,请参阅this Link


4)

由于变量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&amp;width=900&amp;inlineId=id-" class="thickbox     
portfolio-previous" value="'; echo $portnum; echo '">Previous</a>';echo '<a 
href="#TB_inline?height=450&amp;width=900&amp;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;
}
});

它很有效,但任何关于如何优化的建议都将受到高度赞赏。