function color_fadein(element,val1){
$(this).children(element).stop().animate({
opacity: val1,
}, 200);
}
function color_fadeout(element,val2){
$(this).children(element).stop().animate({
opacity: val2,
}, 200);
}
$('.post').hover(color_fadein('img','0.5'),color_fadeout('img', '1'));
Почему это не работает? инструменты разработчика Chrome не возвращают никакой ошибки однако оно не работает. Пожалуйста, помогите мне
Вам нужно создать функцию обертки: и передать this
: (также я бы использовал find
а не children
чтобы он find
глубже)
function op_fadein(t,element,val1){
$(t).find(element).stop().animate({
opacity: val1,
}, 200);
}
function op_fadeout(t,element,val2){
$(t).find(element).stop().animate({
opacity: val2,
}, 200);
}
$('.post').hover(function (){op_fadein(this,'img','0.5')},function (){op_fadeout(this,'img', '1')});
http://jsbin.com/OgOdak/1/edit
Пройдите через this
в функцию, подобную этой, если "img" не является прямым потомком использования.find() вместо children()
function op_fadein(that, element, val1) {
$(that).children(element).stop().animate({
opacity: val1,
}, 200);
}
function op_fadeout(that, element, val2) {
$(that).children(element).stop().animate({
opacity: val2,
}, 200);
}
Добавить function(){}
в наведении так:
$('.post').hover(function () {
op_fadein(this, 'img', '0.5')
}, function () {
op_fadeout(this, 'img', '1')
});