2012-02-10 2 views
4

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

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

Это ваш фактический код? Вы ничего не делаете, но называете эти функции? Вы действительно хотите, чтобы оба они вызвали события «mouseenter» и «mouseleave»? –

ответ

11

Глядя на имена функций 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(); 
} 
+1

Это может быть то, что нужно, но оно не идентично коду в вопросе. –

+0

Я считаю, что это предельное требование OP. – ShankarSangoli

+0

Обратите внимание, что ваш код не выполняет то же, что и код OP. OP вызывает обе функции как «mouseenter», так и «mouseleave». Ваш код вызывает 'capIn' на' mouseenter' и 'capOut' на' mouseleave'. Теперь, из имен функций OP, это может быть то, что они на самом деле хотят, но я бы все же выделил его. –

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

Смотрите здесь: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply

UPDATE:

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

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

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

+1

Это не должно быть равно -1. Он правильно реплицирует код в вопросе, но задает значение 'this' в функциях. Единственное, что я добавил бы, это отправить «аргументы» на всякий случай, если нужны «события» или любые пользовательские аргументы. –

+0

Извините, вы правы – ori

+1

Во втором примере нет необходимости в '... hover (function() {capIn.apply (this);}, function() {capOut.apply (this);})' , просто '... hover (capIn, capOut)'. В первом примере, набрав точку @ amnotiam, это будет 'capIn.apply (this, arguments);'. –

0

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

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

$(".slide").hover(function() { 
    capIn(this), 
    capOut($(this)) //to pass a jQuery object wrapping 'this' 
}); 
Смежные вопросы