如何在jQuery中创建函数并在事件上调用它并将变量传递给它?

时间:2010-09-27 04:57:59

标签: javascript jquery events function

$(".addcart").click(function(){

   $("input[name='items']:checked").each(function() {
       //doing something
   });

});

我正在尝试创建一个我正在做的事情的普通类onclick。有没有办法让“items”成为变量,我的意思是我可以将复选框名称传递给此事件。

3 个答案:

答案 0 :(得分:0)

试试这个,看看它是否成功:

$("input[name='items']:checked").each(function() {
  alert(this.attr("name"));
});

我想我已经在某个地方使用了这个。

[编辑] 这样做的是jQuery将当前项作为变量的上下文传递给foreach。

答案 1 :(得分:0)

使用bind代替

$(".addcart").bind("click", {name: "items"}, function(event){
   $("input[name='" + event.data.name + "']:checked").each(function() {
       //doing something
   });
});

修改

  

“我如何在jQuery中创建函数   并在事件上调用它并传递变量   对它“

那仍然是相同的程序。使用bind附加一个事件处理程序,将一个包含所需函数的对象传递给它。在您的事件处理程序中调用您的函数并从event.data

传递该对象
$(".addcart").bind("click", {foo: "hello world"}, function(event) {
   DoSomethingOnClick(event.data);
});

function DoSomethingOnClick(obj) {
   obj = obj || {};
   if (obj.hasOwnProperty('foo'))
      alert(obj["foo"]);
   else
      alert("no foo here");
}

答案 2 :(得分:0)

您知道所有选中的项目都会有items的名称,所以这不是很有趣,但也许您想要检索每个value的{​​{1}}:

items

以上使用$(".addcart").click(function(){ $("input[name='items']:checked").each(function() { // To access an attribute of this item use the form $(this).attr(...) alert( this.value ); }); }); 来访问正在迭代的元素。请查看 the properties of a DOM element ,了解您可以访问this的哪些属性。

您可以使用this表单从this创建一个jQuery对象,然后您可以使用 .attr() 来访问$(this)的属性。例如,要获取this的类,您可以使用thisthis.className

直接访问DOM元素的属性更快。但对于一些更复杂的操作,很高兴知道$(this).attr("class")也可用。