传递参数在jQuery中点击()和绑定()事件?

我想传递给jquery中的Click()事件的几个参数,我试图跟随,但它不工作,

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

而且,如果我们使用绑定,那么我们将如何做到这一点

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

请帮忙!

请参阅event.data

 commentbtn.bind('click', { id: '12', name: 'Chuck Norris' }, function(event) { var data = event.data; alert(data.id); alert(data.name); }); 

如果您的数据在绑定事件之前被初始化,那么只需在闭包中捕获这些variables即可。

 // assuming id and name are defined in this scope commentBtn.click(function() { alert(id), alert(name); }); 

从哪里可以得到这些价值? 如果他们是从button本身,你可以做

 commentbtn.click(function() { alert(this.id); }); 

如果它们是绑定范围中的variables,则可以从外部访问它们

 var id = 1; commentbtn.click(function() { alert(id); }); 

如果它们是绑定范围中的variables,那么在调用click之前可能会发生变化 ,您将需要创build一个新的闭包

 for(var i = 0; i < 5; i++) { $('#button'+i).click((function(id) { return function() { alert(id); }; }(i))); } 
 var someParam = xxxxxxx; commentbtn.click(function(){ alert(someParam ); }); 

我根本无法得到这个工作。 这都是因为我在不同的文件上执行我的function。 我做了什么来解决这个是使用一个窗口variables (我希望它可以帮助你在未来):

  • 在我的第一个文件。 (我的观点)我有
 <th class="text-right"><label class="select200" onClick="select200()">Select 200 </label></th> 
  • 在我的第二个文件app.js我设置我的窗口variables为我的工人文件使用。 我仔细地在{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); } }); 

这样做将允许我访问我将用于遍历循环的数字variables集。

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