Изменение свойства непрозрачности css с помощью $ .parent () - PullRequest
0 голосов
/ 13 февраля 2012

Я хочу изменить свойство css элемента следующим образом:

Стандартная непрозрачность a.archive_blocks_fa равна 0.5. Когда a.archive_blocks_sa находится, a.archive_blocks_fa должен иметь непрозрачность 1.0. Когда событие наведения закончено, a.archive_blocks_fa должен вернуться к непрозрачности 0.5.

HTML:

<div class="archive_blocks">
 <a href="#" class="archive_blocks_fa">
   <img width="142" height="142" src="#">
 </a>
 <div class="archive_blocks_name">
   <a href="#" class="archive_blocks_sa">Text</a>
 </div>
</div>

Я написал этот код jQuery:

$('a.archive_blocks_sa').hover(function(){
    $(this).parent('.archive_blocks_fa').css('opacity','1');
}, function(){
    $(this).parent('.archive_blocks_fa').css('opacity','0.5');
});

Ребята, что я делаю не так?

Ответы [ 4 ]

1 голос
/ 13 февраля 2012

Проблема здесь в том, что вы не обращаетесь к DOM правильно, попробуйте вместо этого:

$('a.archive_blocks_sa').hover(function(){
    $(this).closest(".archive_blocks").find('.archive_blocks_fa').css('opacity','1');
}, function(){
    $(this).closest(".archive_blocks").find('.archive_blocks_fa').css('opacity','0.5');
});
1 голос
/ 13 февраля 2012

Что вы делаете неправильно, так это то, что элемент с классом archive_blocks_sa не имеет родителя с классом .archive_blocks_fa.

1 голос
/ 13 февраля 2012

archive_blocks_fa является родным братом родителя archive_blocks_sa (элемент поиска).

Итак, вам нужно перейти на уровень parent, а затем использовать метод prev(), чтобы получить предыдущего брата (archive_blocks_fa) и установить его непрозрачность.Попробуйте это.

$('a.archive_blocks_sa').hover(function(){
    $(this).parent().prev('.archive_blocks_fa').css('opacity','1');
}, function(){
    $(this).parent().prev('.archive_blocks_fa').css('opacity','0.5');
});

.prev() получает непосредственно предшествующего брата каждого элемента в наборе совпадающих элементов, необязательно фильтруемых селектором.

0 голосов
/ 13 февраля 2012

Ну, я думаю, parent() выберет только archive_blocks_name div, так как это родитель, а archive_blocks_fa - нет.Попробуйте:

$(this).parent().siblings('.archive_blocks_fa').css('opacity', '1');

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