Передача параметров для события click() и bind() в jquery?
Я хочу передать несколько параметров в событие Click() в jquery, я пробовал следовать, но не работал,
commentbtn.click(function(id, name){
alert(id);
});
А также, если мы используем bind, то как мы это сделаем
commentbtn.bind('click', function(id, name){
alert(id);
});
Пожалуйста, помогите!
Ответы
Ответ 1
см. event.data
commentbtn.bind('click', { id: '12', name: 'Chuck Norris' }, function(event) {
var data = event.data;
alert(data.id);
alert(data.name);
});
Если ваши данные инициализированы до привязки события, просто запишите эти переменные в закрытии.
// assuming id and name are defined in this scope
commentBtn.click(function() {
alert(id), alert(name);
});
Ответ 2
Откуда вы получите эти значения?
Если они из самой кнопки, вы можете просто сделать
commentbtn.click(function() {
alert(this.id);
});
Если они являются переменной в области привязки, вы можете получить к ней доступ без
var id = 1;
commentbtn.click(function() {
alert(id);
});
Если они являются переменной в области привязки, которая может измениться до вызова клика, вам нужно создать новое замыкание
for(var i = 0; i < 5; i++) {
$('#button'+i).click((function(id) {
return function() {
alert(id);
};
}(i)));
}
Ответ 3
var someParam = xxxxxxx;
commentbtn.click(function(){
alert(someParam );
});
Ответ 4
Я не мог заставить это работать вообще. Все потому, что я выполняю свои функции по разным файлам. То, что я сделал, чтобы обойти это, - использовать переменную окна (и я надеюсь, что это поможет вам в будущем):
- В моем первом файле. (Мое мнение) У меня
<th class="text-right"><label class="select200" onClick="select200()">Select 200 </label></th>
- В моем втором файле app.js я настраиваю переменную окна для моего рабочего файла. Я объявил пространство имен в {window} осторожно, поэтому я бы не перезаписал другое пространство имен.
function select200() {
window.fullselect200= {number : 200};
$('#new_button').click();
}
- В моем последнем файле тот, кто делает всю работу:
$('#new_button').on("click", function(event) {
if(window.fullselect200.number) {
//do work
console.log(window.fullselect200.number);
}
});
Выполнение этого позволит мне получить доступ к набору числовых переменных, который я буду использовать для итерации по циклу.
Ответ 5
Альтернатива метода bind().
Используйте метод click(), выполните следующие действия:
commentbtn.click({id: 10, name: "João"}, onClickCommentBtn);
function onClickCommentBtn(event)
{
alert("Id=" + event.data.id + ", Name = " + event.data.name);
}
Или, если вы предпочитаете:
commentbtn.click({id: 10, name: "João"}, function (event) {
alert("Id=" + event.data.id + ", Nome = " + event.data.name);
});
Появится окно предупреждения со следующей информацией:
Id = 10, Name = João