2011-11-18 81 views
0

我必须根据当前图像路径找到下一张图像。这是一些定制的灯箱和jQuery 1.3.2。我的HTML:通过子集内的属性值查找元素

<div id="feat_screenshots"> 
    <a class="lightbox" href="/images/features/1.gif"><img title="Image 1" alt="Image 1" src="/images/features/1.gif"></a> 
    <a class="lightbox" href="/images/features/2.gif"><img title="Image 2" alt="Image 2" src="/images/features/2.gif"></a> 
    <a class="lightbox" href="/images/features/3.gif"><img title="Image 3" alt="Image 3" src="/images/features/3.gif"></a> 
</div> 

和我的javascript:

$(document).ready(function(){ 
    $("a.lightbox").click(function(){ 
     var img_src = $(this).attr("href"); 
     getNextImage(img_src); 
    }); 
} 

function getNextImage(curPath) 
{ 
    var $picset = $("a.lightbox"); 
    alert($($picset).find("img[src=\'/images/features/1.gif\']").attr("title")); 
    alert($($picset).find("img[src$=\'/images/features/1.gif\']").attr("title")); 
    alert($($picset).find("img[src=curPath]").attr("title")); 
    alert($($picset).find("img[src$=curPath]").attr("title")); 
/* 
    to be continued... 
*/ 
} 

我只是试图找出什么可行,什么不是。我在这里只使用.attr(“title”)来调试以测试我找到的图片。

如果我将'/images/features/1.gif'传递给getNextImage(),则只有第二次警报返回正确的标题;所有其他人回来为'未定义'。

所以我的问题是:什么是正确的语法来使用我的变量curPath这里获得一个元素?没有我试过的作品。

回答

2

curPath是一个变量,所以你需要把它串联到选择

$($picset).find("img[src='" + curPath + "']").attr("title") 
+0

$ picse始终是第一个

0

只使用

$(document).ready(function(){ 
    $("a.lightbox").click(function(){ 
     var img_src = $(this).find('img').attr('src'); 
    }); 
} 

和映入getNextImage作品只有第一要素

你套装

var $picset = $("a.lightbox"); 

这始终是您的第一

<a> 

如果你真的想传递给另一个函数,你可以做到这一点

getNextImage($(this),img_src); 

然后在功能上得到它

function getNextImage(current_anchor,curPath) 
{ 
    var img_src = $(current_anchor).find("img[src='" + curPath + "']").attr("title"); 

} 
0

不是一个直接的答案你的问题,但如果你真的想要做的是获得下一个a标签,为什么不使用next()函数?

$("a.lightbox").click(function(){ 
    var nextImage = $(this).next(); 
}); 
1

是curPath是varibale ???

所以试试这个。 ($(picset).find(“img [src =”+ curPath +“]”)。attr(“title”));

+0

$ picse始终是第一个