вызывающий абонент определил функцию с параметрическими усилителями

Я определяю функцию func1 (); я хочу, чтобы это взяло некоторый параметрический усилитель (усилители) т.е.

var func1(aaa, bbb){
//do something, anything!
};

затем я хочу назвать его позже в документе чем-то вроде этого:

$('#some_id').click(func1($this));

но не работа.

Я смешивал с ним некоторое время, но его очень странное путь jquery/javascript обрабатывает определяемые пользователем функции мне, по крайней мере. some1 может предоставить мне простой фрагмент кода? Спасибо

6
задан Reigel 28 July 2010 в 01:07
поделиться

6 ответов

Если все, что вы хотите передать, это $ (this) , вам не нужен параметр, так как он будет доступен внутри определенной функции.

$('#some_id').click(func1);

Однако вы не можете добавлять такие параметры:

$('#some_id').click(func1(param1, param2));

Тогда для определения вашей функции у вас будет просто

function func1() { }

Если вам нужны параметры, отличные от $ (this), вам нужно будет сделать следующее:

$('#some_id').click(function () {
    func1(aaa, bbb); });
6
ответ дан 8 December 2019 в 18:30
поделиться

Полагаю, вы пытаетесь убедиться, что this по-прежнему ссылается на элемент, получивший событие.

Попробуйте: http://jsfiddle.net/jKM9s/

$('#some_id').click(function() {
    func1.call(this, 'somearg', 'somearg'); 
});

   // now "this" references the element when func1 is called
function func1(aaa, bbb){
    //do something, anything!
};

РЕДАКТИРОВАТЬ:

Если все, что вам нужно, это ссылка на выбранный элемент, то сначала см. @ phoffer's решение.

5
ответ дан 8 December 2019 в 18:30
поделиться

Это должно быть

function func1(aaa, bbb)  { ... }
1
ответ дан 8 December 2019 в 18:30
поделиться

Вот быстрый пример:

Убедитесь, что вы определили свою функцию с помощью function . Затем, если вы хотите вызвать его из jQuery, , вы должны использовать встроенную функцию в click () .

<div>Click Me!</div>
<div>Pick this one!</div>
<script type="text/javascript">   
function func1(aaa, bbb) 
{ 
    alert('You clicked the DIV that said: "' + aaa.innerHTML + '" and ' + bbb); 
};          
$('div').click(function ()
{
    func1(this, "that's ok.");
});
</script>        
1
ответ дан 8 December 2019 в 18:30
поделиться

В Javascript нельзя одновременно назначать функцию и передавать аргументы. Используйте анонимную функцию ...

$('#some_id').click(function() {
  var arg1 = $(this);
  var arg2 = 'whatever';

  return func1(arg1, arg2);
});

Если вам нужен только параметр this , назначьте ссылку на функцию ...

$('#some_id').click(func1);
0
ответ дан 8 December 2019 в 18:30
поделиться

Вы не можете сделать это как $('#some_id').click(func1($this)); из-за определения .click(handler(eventObject)). ... если вы вызовете его таким образом, $this в func1($this) будет ожидаться как eventObject.

для этого можно использовать .bind() и event.data.

демо

пример...

function sum(event) {
   alert(event.data.x + event.data.y);
   // `this` here would refer to the element calling this function
   // for example, $(this).attr('id') would return `someID` if called below
}

назовите это как

$('#someID').bind('click',{x:4, y:5}, sum);
0
ответ дан 8 December 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: