2

我正在将 JavaScript 代码从我的 HTML 中分离出来。我目前的代码如下所示:

<div onclick="return do_something_with('100566');" class="clickable">Click Me!</div>

我想将 onclick 交换为仅包含我传递给方法的参数的属性。

我正在使用 jQuery 和以下类型的代码:

var $j = jQuery;
$j(function(){
    $j('.clickable').live('click',function(){
        param = $j(this).attr('attribute_name');
        do_something(param);
    });
});

我可以为“attribute_name”使用什么属性来安全地传达这个参数值?我知道我可以使用 id,但我已经在 DOM 的不同位置定义了一个具有相同 id 的元素。

有什么建议么?

4

6 回答 6

4

我通常添加一个有意义的前缀Client-100566,然后使用以下代码访问它:

var param = $(this).attr("id").split("-")[1];

编辑:删除了无效的全数字 id 令牌的建议。

于 2009-08-25T00:43:52.633 回答
2

我经常发现自己要么使用id独特的东西,要么隐藏<span>在数据中。

于 2009-08-25T00:35:09.603 回答
1

a你不能在里面使用 rel 标签div吗?它允许将 1 个参数或 n 个参数传递给 doSomething。

<div>
  <a class="clickable" rel="param1 param2 param3">Click Me!</a>
</div>

所以现在当 param 被发送到 doSomething 时,它是一个空格分隔的列表,param.indexOf("param1")可用于检查已发送的参数?

于 2009-08-25T00:38:27.357 回答
0

你为什么不做这些a标签?有几个站点使用锚点 (the #someThing) 部分或使用rel属性。

于 2009-08-24T23:25:18.213 回答
0

您可以将 class 或 title 属性用作以空格分隔的参数列表。标题的缺点是当您的元素悬停时它会显示为弹出窗口:

<div class="clickable param1 param2 param3">

或者

<div class="clickable" title="param1 param2 param3">

以下是您可能会考虑的其他属性的列表。

于 2009-08-25T00:26:10.080 回答
0

您可以组成任何属性名称。

<div onclick="foo();" silkyvalue="12938">hello</div>

不过,我通常会使用一些命名格式,例如“my_somethingID”。

于 2009-08-25T00:49:41.967 回答