【问题标题】:How can I create functions in jQuery and call it on event and pass variable to it?如何在 jQuery 中创建函数并在事件中调用它并将变量传递给它?
【发布时间】:2010-09-27 04:57:58
【问题描述】:
$(".addcart").click(function(){

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

});

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

【问题讨论】:

  • 你能澄清你到底想做什么吗?像下面这样的东西? $(".addcart").click(function(){ var cbxName = 'items'; $("input[name='" + cbxName + "']:checked").each(function() { //doing }); });
  • 你能添加更多细节吗?...有点模糊..
  • 事件是你传递给click的函数,你不想把变量传递给它,你想把它传递给你用each调用的函数。我建议您编辑您的问题以反映这一点。
  • 对不起,伙计们,我认为我的问题不是很正确。它应该是“如何在 jQuery 中创建函数并在事件中调用它并将变量传递给它”

标签: javascript jquery events function


【解决方案1】:

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

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

我想我曾经在某处这样使用过。

[编辑] 与此有关的是 jQuery 将当前项作为变量的上下文传递给 foreach。

【讨论】:

  • 你的意思可能是this.name 而不是this.attr("name") 或者如果是这样用jQuery包装它,$(this).attr("name")
  • 对不起!你是对的!就是这样,代码是$(this).attr("name"),不太确定改用this.name。
  • 这段代码有点傻。您正在迭代所有名称为 itemsinput 项目并检查名称是什么.....提示:items
【解决方案2】:

使用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");
}

【讨论】:

    【解决方案3】:

    您知道所有选中的项目都有一个名称items,所以这不是很有趣,但也许您想检索每个itemsvalue

    $(".addcart").click(function(){
    
       $("input[name='items']:checked").each(function() {
    
             // To access an attribute of this item use the form $(this).attr(...)
           alert( this.value );
    
       });
    
    });
    

    上面使用this 来访问被迭代的元素。查看the properties of a DOM element,了解您可以访问this 的哪些属性。

    您可以使用$(this) 形式从this 创建一个jQuery 对象,然后您可以使用.attr() 访问this 的属性。例如,要获取this 的类/es,您可以使用this.className$(this).attr("class")

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

    【讨论】:

    • 使用this.valuethis.whatever-property-you-have-attached-to-the-DOM-element(有点厌倦这样说)
    • @蒋毅 - 粗鲁的括号表达完全没有必要。
    猜你喜欢
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多