我正在努力从我的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的元素。
有什么建议吗?
答案 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'。