Sol*_*nal 5 jquery unobtrusive-javascript
在以前的生活中,我可能做过这样的事情:
<a href="#" onclick="f(311);return false;">Click</a><br/>
<a href="#" onclick="f(412);return false;">Click</a><br/>
<a href="#" onclick="f(583);return false;">Click</a><br/>
<a href="#" onclick="f(624);return false;">Click</a><br/>
Run Code Online (Sandbox Code Playgroud)
现在使用jQuery,我可能会这样做:
<a class="clicker" alt="311">Click</a><br/>
<a class="clicker" alt="412">Click</a><br/>
<a class="clicker" alt="583">Click</a><br/>
<a class="clicker" alt="624">Click</a><br/>
<script language="javascript" type="text/javascript">
$(".clicker").bind("click", function(e) {
e.preventDefault();
f($(this).attr("alt"));
});
</script>
Run Code Online (Sandbox Code Playgroud)
除了使用alt属性将数据从DOM传递给jQuery感觉就像一个黑客,因为这不是它的预期目的.这里存储/隐藏DOM中的数据以供jQuery访问的最佳实践是什么?
JQuery.data允许您将字典与 DOM 元素关联起来。该数据可以通过 jQuery 设置:
<a class="clicker">Click</a><br/>
<a class="clicker">Click</a><br/>
<a class="clicker">Click</a><br/>
<a class="clicker">Click</a><br/>
<script language="javascript" type="text/javascript">
var values = new Array("311", "412", "583", "624");
$(".clicker").each(function(i, e) {
$(this).data('value', values[i]).click(function(e) {
f($(this).data('value'));
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
或者(自 jQuery 1.4.3 起)使用HTML5 data- 属性,即使在非 HTML5 文档中也可以使用:
<a class="clicker" data-value="311">Click</a><br/>
<a class="clicker" data-value="412">Click</a><br/>
<a class="clicker" data-value="583">Click</a><br/>
<a class="clicker" data-value="624">Click</a><br/>
<script language="javascript" type="text/javascript">
$(".clicker").click(function(e) {
f($(this).data('value'));
});
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3224 次 |
最近记录: |