2015-04-21 3 views
0

Я хотел бы использовать $(this) как аргумент в функции bind.

Я хочу привязать класс элементов someClass к выполнению someFunc (уже определенная функция), когда возникает someEvent.

someFunc принимает аргументы, один из которых является элементом действия, element. В этом случае я хочу действовать на какой-либо элемент с классом someClass, в котором происходит событие.

Так что, я думаю, что я хотел бы использовать $(this), только в качестве аргумента в функции связывания:

$('.someClass').bind('someEvent', {element: $(this)}, someFunc); 

Но это не похоже на работу, несмотря на осмыслении мне.

Как я могу использовать $(this) или что-то, что даст те же результаты в методе связывания?

Я предпочел бы не использовать что-то вроде следующего:

$('.someClass').bind('someEvent', function() { 
    someFunc($(this)); 
}); 

EDIT: Попытка это так, как я не предпочитаю

$(document).ready(function() { 

    $('.menu-hover').bind('mouseenter', function() { 

     hover_true($(this), '#1B4186'); 

    }); 

    $('.menu-hover').bind('mouseleave', function() { 

     hover_false($(this), '#26519E'); 

    }); 

}); 

function hover_color(element, color) { 

    $(element).css('background-color', color); 

}; 

hover_color просто имел в виду, чтобы цвет данный element с данным color. Он не работает (вообще), и я понятия не имею, почему.

+0

Я не думаю, что вы можете избежать использования способа, которым вы бы этого не хотели. Это стандартный синтаксис для обратных вызовов javascript. Почему бы вам не захотеть так поступать? – MuppetGrinder

+0

@MuppetGrinder Я хотел, чтобы связка была более компактной. Я новичок в jQuery, поэтому я не знаком с нормами. Я просто попробовал то, что не хотел, менее сжатый способ, и это, похоже, не работает. – Jacob

+0

Вы проверили, что такое $ (это), когда оно передается в функцию someFunct()? можете ли вы отредактировать свой вопрос, чтобы включить то, что вы пробовали, с момента его публикации, а также результаты этого? – MuppetGrinder

ответ

1

Проблема в том, что во время вызова вызова $ (это) является еще одним контекстом, чем во время событияHandling. Вы, вероятно, передаете документ или что-то прямо сейчас.

Я не вижу способа использовать ваш метод наименьшего предпочтения, поскольку только во время обработки события контекст устанавливается на элемент под рукой.

Дополнение: На самом деле, может быть, поскольку в вашей попытке «someFunc» является eventHandler, вы могли бы просто использовать $ (this) внутри объявления someFunc, без необходимости передавать его как параметр вообще.

Смежные вопросы