我应该避免在id属性中编码信息吗?


Should I refrain from encoding information in the id attribute

最近我养成了在id中编码某些信息的习惯。例如,查询数据库

select article_id, title from articles order by ...

,然后使用PHP在元素的id中编码信息

foreach($article as $id=>$title){
    echo '<span class="title" id="a_'.$id.'">'.$title.'</span><br />';
}

这样我就可以使用javascript/jQuery获取ajax调用的id,比如获取预览之类的

$("span.title").click(function(){
    var idArr = $(this).attr('id').split('_');
    data = {};
    data.id = idArr[1];
    $.ajax({
        ...
    });
});

我从未见过这种方法被提倡,所以我开始怀疑我是否在为某种灾难做准备。

如果你使用的是HTML5,你可以使用data属性。

<span class="title" data-id="' . $id . '">'.$title.'</span>

然后你可以通过jQuery访问它,像这样:

$("span.title").click(function(){
    var id = $(this).data('id');
    $.ajax({
        ...
    });
});