【问题标题】:How to pass html element reference via .change trigger如何通过 .change 触发器传递 html 元素引用
【发布时间】:2012-10-17 04:03:12
【问题描述】:

我有一个名为 showStuff() 的函数,我想在初始化期间调用一次,并在选择字段更改时再次调用它。我需要将类或 id 名称传递给函数,但这不起作用:

$('.filterChange').change($('#htmlElement'), showStuff);

我做错了什么?解决方法是在更改时调用通用函数,然后从那里调用 showStuff() 但我不明白为什么更改触发器不起作用。 .bind 触发器也有同样的问题。

【问题讨论】:

    标签: jquery parameter-passing onchange eventtrigger


    【解决方案1】:

    以下是如何将数据传递给事件的基本知识:

    function greet(event) { alert("Hello "+event.data.name); }
    $("button").on("click", { name: "Karl" }, greet);
    $("button").on("click", { name: "Addy" }, greet);
    

    http://api.jquery.com/on/

    【讨论】:

      【解决方案2】:

      您应该将其作为 Map 传递,因为这是公认的语法。

      $('.filterChange').change({'myelement': $('#htmlElement')}, showStuff);
      
      function showStuff(e) {
         $(e.data.myelement.show());
      }
      

      我认为你想要的是一个简单的内部函数,如下所示,

      $('.filterChange').change(function () {
         showStuff($('#htmlElement'));
      }).change(); //trigger during init or simply call showStuff($('#htmlElement'))
      

      【讨论】:

      • 我自己应该想到的!谢谢,考虑到传递简单的文本可以正常工作,知道为什么它不能像以前那样工作吗?
      • 你的意思是.change($('#htmlElement'), showStuff);?您需要像下面的 Rene Koch 回答那样传递参数。例如:jsfiddle.net/cg9ya
      • 所以基本上我不能用.change直接传递(没有内部函数)?下面的答案(参数传递的一部分)不适用于 .change 触发器。
      • @DominicM 是的..但这就是您需要将参数传递给处理程序函数的方式..在这种情况下您也可以传递对象..请参阅更新的帖子。 jsfiddle.net/cg9ya/1
      猜你喜欢
      • 2019-11-02
      • 2016-04-09
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多