2014-10-28 3 views
2

У меня есть поле ввода текста со своим классом: .my_ids. Я пытаюсь написать сценарий с jquery, так что каждый раз, когда вход изменяется, он вызывает определенную функцию. Это достаточно легко, если я не пытаюсь передать переменную в функцию:Передача переменных в функцию с использованием .on()

$(document).on('change','.my_ids', testfunc); 
function testfunc(){ 
    alert("good"); 
} 

Функция посылает мне уведомление каждый раз, когда входные изменения; работает просто отлично.

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

$(document).on('change','.my_ids', testfunc("hereismyvariable")); 
function testfunc(myvariable){ 
    alert(myvariable); 
} 

он посылает предупреждение при загрузке документа и не предупредит, когда входные изменения. Что я могу потерять?

+0

Обработчики событий прикреплены как ссылка на функцию, но с помощью скобок вы вызывали эту функцию. – Danijel

ответ

1

Вы бы сделать это

$(document).on('change','.my_ids', function() { 
    testfunc("hereismyvariable"); 
}); 

Или вы могли бы сделать это

$(document).on('change','.my_ids', testfunc("hereismyvariable")); 

function testfunc(myvariable){ 
    return function() { 
    alert(myvariable); 
    } 
} 
+0

Большое спасибо! Работал отлично. – neanderslob

2

Здесь вы передаете функцию: $(document).on('change','.my_ids', testfunc);
Здесь вы проходящее возвращаемое значение функции: $(document).on('change','.my_ids', testfunc("hereismyvariable"));
Потому что testfunc("hereismyvariable") = undefined (Без возврата значение), вы добавляете обработчик событий с неопределенной функцией.

1

() Оператор вызывает функции, поэтому возвращаемое значение функции устанавливается как обработчик, который, похоже, не является тем, что вы хотите. Другие ответы предлагают несколько решений. Другой вариант заключается в использовании data аргумента:

$(document).on('change', '.my_ids', "hereismyvariable", testfunc); 

function testfunc(event) { 
    console.log(event.data); // "hereismyvariable" 
} 

data аргумента может быть что угодно. data Свойство объекта event относится к переданному значению.

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