2013-02-17 2 views
0
$(this).click(function() { 
    clicked($(this)); 
}); 

Как свести этот код к одной строке?Свернуть Свернуть (

Пробовал это - не работает:

$(this).click(clicked(this)); 

Он будет использоваться тогда, как это:

function clicked(element) { 
    element.css('...'); 
     // some other code 
} 
+0

Ну, '$ (this) .click (function() {clicked ($ (this));});' ... но серьезно, почему? – JJJ

+0

@Juhana из-за методов интерполяции – Jasper

+0

Не могли бы вы привести пример? Я не знаю, что такое метод интерполяции в этом контексте. – JJJ

ответ

1

Вы можете передать clicked функцию непосредственно:

$(this).click(clicked); 

но вам нужно будет изменить функцию clicked, чтобы обернуть элемент.

function clicked() { 
    $(this).do("whatever") 
} 

Что касается обновленного вопроса, вы можете иметь clicked вернуть функцию, если вы хотите.

function clicked(element) { 
    return function() { 
     element.css('...'); 
     // some other code 
    } 
} 

Итак, вы можете сделать это:

$(this).click(clicked($(this))); 

Но я бы лично изменить clicked функцию, чтобы работать, как первая версия.

+0

работает как шарм, спасибо! – Jasper

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