jQuery - Как добавить атрибут rel для нескольких ссылок? - PullRequest
1 голос
/ 01 апреля 2011

Вот мой код:

$('#floorplans img').each(function() {
    $('#floorplans a').each(function() {
        $(this).attr('rel','lightbox'); 
    });
});

Пока все работает хорошо, но мне нужно, чтобы это делало то же самое и для #gallery. Можно ли сделать это без необходимости писать тот же код снова для #gallery?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 01 апреля 2011

Будет

$('#floorplans img a, #gallery img a').attr('rel', 'lightbox');

не делать?

Обновление: у меня были "IMG" и "A" задом наперед, должны были быть все "A", которые содержат "IMG" внутри "#Div", например:

$('#floorplans a:has(img), #gallery a:has(img)').attr('rel', 'lightbox')
2 голосов
/ 01 апреля 2011

Да - используйте мультиселектор

1 голос
/ 01 апреля 2011

Не увидев вашей разметки, может сработать что-то вроде этого:

$('#floorplans img, #gallery img').each(function() {
    $('a').each(function() {
        $(this).attr('rel','lightbox'); 
    });
});

НТН

Обновление: Я до сих пор не думаю, что это правильно, Вы не используете элементы, которые вы выбрали во внешнем цикле, так что это избыточно. И я думаю, что вы устанавливаете rel attr несколько раз из-за этого. Я не пробовал, но я думаю, что вы должны использовать только один цикл, где вы выбираете ссылки, которые имеют изображение.

$('#floorplans a:has(img), #gallery a:has(img)').each(function() {
        $(this).attr('rel','lightbox'); 
});
0 голосов
/ 01 апреля 2011

Вы можете определить функцию и использовать ее, например:

var addRel = function(selector) {
    $(selector).each(function() {
        $(this).attr('rel','lightbox'); 
    });
};

addRel('#floorplans a');
addRel('#gallery a');
...