Сопоставление атрибутов Rel с Jquery - PullRequest
1 голос
/ 26 февраля 2010

Сначала, пожалуйста, смотрите этот пост на Doctype

Я пытался получить ответ на этот вопрос, но безуспешно. Сценарий, предоставленный первым постером, прекрасно работает, но мне нужно, чтобы это происходило автоматически для всех групп, соответствующих Rel.

Любая помощь будет принята с благодарностью.

EDIT: Для тех из вас, кто не может перейти по ссылке выше, вот сценарий:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>match rel</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
  $("input[type='button']").click(function(){
    $(".photo img").show().css('background','transparent'); //restore visibility
    matchImg($("#relval").val());
  });
});

function matchImg(relVal){
    var sel = ".photo img[rel='" + relVal + "']";
    if ($(sel).length > 0) { //check matching rel
        $(sel + ":gt(0)").hide(); //hide all except first
        $(sel + ":first").css('background','red'); //set background to first
    }
}
</script>
<style type="text/css">
.photo img {
    padding: 5px;
    float: left;
}
</style>
</head>
<body>
<div class="photo">
<img rel="dt" src="http://doctype.com/images/logo-small.png" alt="1" />
<img rel="dt" src="http://doctype.com/images/logo-small.png" alt="2" />
<img rel="dt" src="http://doctype.com/images/logo-small.png" alt="3" />
<img rel="so" src="http://sstatic.net/so/img/logo.png" alt="4" />
<img rel="so" src="http://sstatic.net/so/img/logo.png" alt="5" />
</div>
<p style="clear: both;">
Enter 'dt' or 'so' <input type="text" value="dt" id="relval" />
<input type="button" value="match" />
</p>
</body>
</html>

По сути, я делаю сетку фотографий и изменяю их. Некоторые фотографии связаны, а некоторые нет. Те, которые связаны, будут иметь соответствующие атрибуты Rel. Я хотел бы, чтобы jquery распознал группу связанных изображений (с одинаковым значением), скрыл все изображения, кроме первого, и применил фоновое изображение к контейнеру первой фотографии (еще не завершено, но, скорее всего, это будет div или li).

Этот скрипт уже делает это.

Однако мне нужен скрипт, чтобы сделать это автоматически, со всеми соответствующими группами rel, без необходимости вводить атрибут rel.

1 Ответ

3 голосов
/ 26 февраля 2010

Ну, во-первых, скрипт должен был бы выяснить все значения "rel".

$(function() {
 var allRels = {};
 $('img[rel]').each(function() {
   allRels[$(this).attr('rel')] = true;
 });

Тогда вы можете пройти и спрятать все, кроме первого (или того, что вы хотите сделать):

$.each(allRels, function(rel) {
  $('img[rel=' + rel + ']').each(function(i) {
    if (i == 0) {
      // $(this) is the first image with this particular "rel" value
    }
    else {
      // $(this) is another image in the group, but not the first
    }
  });
});

});

Я не проверял это, но, возможно, вы поняли идею.

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