【问题标题】:How to send multiple arguments to jQuery click function?如何向 jQuery click 函数发送多个参数?
【发布时间】:2010-12-05 04:42:36
【问题描述】:

目前我正在使用类似的东西:

$('.myclass').click(function(){  
    var msg = $(this).attr('id');  
    alert(msg)
});

还有 HTML:

< a href="#" class="myclass" id="101">Link</a>

如果我需要其他参数,我将如何阅读它们?我目前使用的方式也是正确的方式吗?最初我使用的是隐藏的输入字段,所以它已经是一个进步了。 :p

【问题讨论】:

  • 以数字开头的 id 被认为是不好的约定,但如果您不使用它作为 id,那么可能没问题 - 上次我检查时,Firefox 无法识别以数字开头。
  • 是的,这是正确的 fudgey... 不要以数字开头,但我的回答中的想法仍然相同。

标签: jquery click parameter-passing


【解决方案1】:

jQuery Events

jQuery .click()

$('.myclass').bind("click", { Param1: "", Param2: 2 }, function(event){
    alert(event.data.Param2);
});

【讨论】:

  • 这是否意味着我必须在同一页面上包含此功能?目前我所有的 js 东西都在一个单独的文件中。
  • 所以,我在事件数据中可以传递整个 json 对象,不是吗?不错的功能。
  • @Roger 您也可以在外部使用该函数,只需确保使用 event.data.ParamX 方法解析外部函数中的参数,如回复所示。效果很好。
【解决方案2】:

您可以使用bind() 并将附加数据作为event.data 发送到事件处理程序

【讨论】:

    【解决方案3】:

    这可能不是最好的方法,但我所做的是用连字符来描述 id 属性与其他参数,例如id="101-red-420582",这三个含义不同,可以使用split() 函数轻松分解。本身不是最好的,但我已经做到了,而且效果很好。

    【讨论】:

    • 巧合的是我想出了这个确切的想法,它工作正常,但就像你说的不太确定它是否正确,有时字符串可能会变得很大(不确定是否有限制id)。
    • 我一直使用类似的方法,但我使用的是 'rel' 属性而不是 'id'。我相信其中任何一个都会包含您需要的尽可能多的信息,包括 HTML。
    【解决方案4】:

    快速解决方案

    &lt;p class="msg_head" id="837" rel="a" **till_limit="9"**&gt;Header-1 &lt;/p&gt;

    你可以参考

     $(this).attr('till_limit');
    

    这是类似的解决方案,例如定义您自己的 ID 并根据您的要求引用元素。

    【讨论】:

    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多