将参数传递给click()& jquery中的bind()事件?

时间:2010-10-22 06:47:37

标签: javascript jquery events

我想在jquery中将几个参数传递给Click()事件,我尝试了以下但是它不起作用,

commentbtn.click(function(id, name){
    alert(id);
});

如果我们使用bind那么我们将如何做到

commentbtn.bind('click', function(id, name){
    alert(id);
});

请帮忙!

4 个答案:

答案 0 :(得分:121)

请参阅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);
});

答案 1 :(得分:20)

你从哪里获得这些价值? 如果他们来自按钮本身,你可以做

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)));
}

答案 2 :(得分:0)

var someParam = xxxxxxx;

commentbtn.click(function(){

    alert(someParam );
});

答案 3 :(得分:-1)

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