Мне нужно послать this
функциям capIn() и capOut(), чтобы я мог нацелить дочерние divs правильного .slide. Как передать this
функции. this
будет тем, что зависло.JQuery передать это функции
$(".slide").hover(function(){capIn();capOut();});
Мне нужно послать this
функциям capIn() и capOut(), чтобы я мог нацелить дочерние divs правильного .slide. Как передать this
функции. this
будет тем, что зависло.JQuery передать это функции
$(".slide").hover(function(){capIn();capOut();});
Глядя на имена функций 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();
}
Это может быть то, что нужно, но оно не идентично коду в вопросе. –
Я считаю, что это предельное требование OP. – ShankarSangoli
Обратите внимание, что ваш код не выполняет то же, что и код OP. OP вызывает обе функции как «mouseenter», так и «mouseleave». Ваш код вызывает 'capIn' на' mouseenter' и 'capOut' на' mouseleave'. Теперь, из имен функций OP, это может быть то, что они на самом деле хотят, но я бы все же выделил его. –
$(".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. Он правильно реплицирует код в вопросе, но задает значение 'this' в функциях. Единственное, что я добавил бы, это отправить «аргументы» на всякий случай, если нужны «события» или любые пользовательские аргументы. –
Извините, вы правы – ori
Во втором примере нет необходимости в '... hover (function() {capIn.apply (this);}, function() {capOut.apply (this);})' , просто '... hover (capIn, capOut)'. В первом примере, набрав точку @ amnotiam, это будет 'capIn.apply (this, arguments);'. –
Это работает для меня:
function capOut(jq) {
alert(jq.hasClass('slide'))
}
$(".slide").hover(function() {
capIn(this),
capOut($(this)) //to pass a jQuery object wrapping 'this'
});
Это ваш фактический код? Вы ничего не делаете, но называете эти функции? Вы действительно хотите, чтобы оба они вызвали события «mouseenter» и «mouseleave»? –