найти элемент по значению атрибута в подмножестве - PullRequest
0 голосов
/ 18 ноября 2011

Я должен найти следующее изображение, основываясь на текущем пути изображения. Это для некоторого настроенного лайтбокса и 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 (), только 2-е предупреждение возвращает правильный заголовок; все остальные возвращаются как «неопределенные».

Итак, мой вопрос: каков правильный синтаксис для использования моей переменной curPath здесь, чтобы получить элемент? Ничто из того, что я пробовал, не работает.

Ответы [ 4 ]

2 голосов
/ 18 ноября 2011

curPath - переменная, поэтому вам нужно объединить ее с селектором

$($picset).find("img[src='" + curPath + "']").attr("title")
1 голос
/ 18 ноября 2011

Является ли curPath переменным ???

Так что попробуйте это.

alert ($ ($ picset) .find ("img [src =" + curPath + "]"). Attr ("title"));

0 голосов
/ 18 ноября 2011

Не прямой ответ на ваш вопрос, но если все, что вы действительно хотите сделать, это получить следующий тег a, почему бы не использовать функцию next()?

$("a.lightbox").click(function(){
    var nextImage = $(this).next();
});
0 голосов
/ 18 ноября 2011

просто используйте

$(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");

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...