传递参数在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