不引人注目的JavaScript - 安全属性?

时间:2009-08-24 23:22:30

标签: javascript jquery html unobtrusive-javascript

我正在努力从我的HTML中分离JavaScript代码。我目前的代码如下:

<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的元素。

有什么建议吗?

6 个答案:

答案 0 :(得分:4)

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

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

修改:删除了无效的全号ID令牌的建议。

答案 1 :(得分:2)

我经常发现自己使用id来表示独特的内容,或者使用数据隐藏<span>

答案 2 :(得分:1)

您无法在a内的div上使用rel标记吗?它允许将1个参数或n个参数传递给doSomething。

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

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

答案 3 :(得分:0)

为什么不制作这些a代码?有几个站点使用锚点(#someThing)部分或使用rel属性。

答案 4 :(得分:0)

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

<div class="clickable param1 param2 param3">

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

以下是您可能会考虑的other attributes列表。

答案 5 :(得分:0)

您可以只编辑任何属性名称。

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

我通常会使用一些命名格式,例如'my_somethingID'。