JQuery передает это функции - PullRequest
4 голосов
/ 10 февраля 2012

Мне нужно отправить this в функции capIn () и capOut (), чтобы я мог нацелить дочерние элементы правильного .slide. Как мне передать this в функцию. this было бы то, что зависло.

$(".slide").hover(function(){capIn();capOut();});

Ответы [ 3 ]

11 голосов
/ 10 февраля 2012

Глядя на имена функций capIn и capOut, становится понятно, что это 2 разных поведения.Я полагаю, что у вас есть 2 различных поведения на mouseenter и mouseleave событиях.hover метод может принимать 2 метода, один для mouseenter, а другой для mouseleave.Вы можете попробовать это

$(".slide").hover(capIn, capOut);

Вы можете использовать this внутри capIn и capOut, это будет указывать на .slide элемент, на котором вы зависли.

function capIn(){
   var $childrens = $(this).children();
}

function capOut(){
   var $childrens = $(this).children();
}
10 голосов
/ 10 февраля 2012
$(".slide").hover(function(){
    capIn.apply(this);
    capOut.apply(this);
});

См. Здесь: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply

ОБНОВЛЕНИЕ:

Если capIn для mouseenter и capOut для mouseleave, тогда:

$(".slide").hover(function(){
    capIn.apply(this);
}, function(){
    capOut.apply(this);
});

ShankarSangoli решение является более кратким, но если в дополнение к this необходимо передать какие-либо аргументы, тогда можно использовать capIn.apply(this, arguments).

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

Это работает для меня:

function capOut(jq) {
    alert(jq.hasClass('slide'))
}

$(".slide").hover(function () {
    capIn(this),
    capOut($(this)) //to pass a jQuery object wrapping 'this'
});
...