Jquery 在HTML中适当地分配ID

Jquery 在HTML中适当地分配ID,jquery,html,design-patterns,organization,Jquery,Html,Design Patterns,Organization,我刚开始使用jQuery 1.5个月,我发现自己养成了一个不太喜欢的PHP+jQuery习惯。我想知道是否有人有建议让事情变得更优雅。考虑下面的HTML,我是通过执行一个简单的SQL查询生成的,并用PHP: <div id='boat_1' class='boat speedboat'></div> <div id='boat_2' class='boat dory'></div> <div id='car_1' class='car

我刚开始使用jQuery 1.5个月,我发现自己养成了一个不太喜欢的PHP+jQuery习惯。我想知道是否有人有建议让事情变得更优雅。考虑下面的HTML,我是通过执行一个简单的SQL查询生成的,并用PHP:
<div id='boat_1' class='boat speedboat'></div>    
<div id='boat_2' class='boat dory'></div>
<div id='car_1' class='car racecar'></div>
<div id='car_2' class='car racecar'></div>
但通常情况下,那个//做某事的人想知道是哪辆车触发了点击事件。此外,做某事可能需要分离类型boat或car和id,以执行POST操作并写回数据库……例如

我现在要做的是找到我需要的id和其他唯一信息,这很简单,但对我来说,它闻起来:

$(".car").bind(function(){
var id = $(this).attr("id").replace("car_", "");
});
有人可能建议改用class属性,因为您不必担心唯一性。但由于类名不是单数的,正如我所展示的,每个元素可以有多个类名,所以我不认为这是一个候选解决方案

因为id在整个文档中必须是唯一的,所以这就是我所选择的解决方案。我知道如果可以使用相同名称的多个ID,getElementById将中断,但有时我想知道如果ID不必是唯一的,如果它们具有不同的父ID,这是否有益

你是怎么做到的

我应该使用HTML5的数据-*


谢谢

您不喜欢您的方法的哪些方面?我不希望使用bind,而是使用click。此外,如果需要,还可以链接类并修改//do something以将id拆分为u,然后返回数组中的最后[1]项:


您的方法似乎可以获取数字id!:

您不喜欢您的方法的哪些方面?我不希望使用bind,而是使用click。此外,如果需要,还可以链接类并修改//do something以将id拆分为u,然后返回数组中的最后[1]项:


您的方法似乎可以获取数字id!:

老实说,我会这么做的

但是,我会以另一种方式对其进行过滤,使其成为类似的函数,并从字符串中提取数字:

function pullNumber(n) { 
  return n.replace(/[^0-9]/g, ''); }

老实说,我会这么做的

但是,我会以另一种方式对其进行过滤,使其成为类似的函数,并从字符串中提取数字:

function pullNumber(n) { 
  return n.replace(/[^0-9]/g, ''); }

按如下方式呈现HTML:

<div data-id="1" class="boat speedboat"></div>    
<div data-id="2" class="boat dory"></div>
<div data-id="1" class="car racecar"></div>
<div data-id="2" class="car racecar"></div>
从jQuery1.4.3HTML5数据开始,属性将自动拉入jQuery的数据对象。jQuery1.6中更改了使用嵌入破折号的属性处理,以符合W3CHTML5规范

按如下方式呈现HTML:

<div data-id="1" class="boat speedboat"></div>    
<div data-id="2" class="boat dory"></div>
<div data-id="1" class="car racecar"></div>
<div data-id="2" class="car racecar"></div>
从jQuery1.4.3HTML5数据开始,属性将自动拉入jQuery的数据对象。jQuery1.6中更改了使用嵌入破折号的属性处理,以符合W3CHTML5规范


我认为您的方法看起来很适合您所做的事情,但我要指出的是,在HTML4中,您可以使用rel属性,它实际上是未使用的,但是是有效的HTML,因此它不会像HTML4解析器中的data-*那样触发警告。我使用它,就像你建议使用class属性一样,但是没有咀嚼我的类的副作用。

我认为你的方法看起来很适合你正在做的事情,但是我要指出的是,在HTML4中,你可以使用rel属性,它实际上是未使用的,但是是有效的HTML,所以它不会像HTML4解析器中的data-*那样触发警告。我使用它,就像你建议使用class属性一样,但是没有咀嚼我的类的副作用。

是的,我不特别喜欢使用类的另一个原因是因为它对设计器很难。我希望所有id和类都不包含任何单独用作javascript标识符的标识符。谢谢你的提示。是的,我不特别喜欢使用类的另一个原因是它对设计者来说很难。我希望所有id和类都不包含任何单独用作javascript标识符的标识符。谢谢你的提示。我不喜欢我的方法,因为我必须执行.replace来获取关于触发事件的元素的明显而重要的信息。我叫我书呆子,但这个问题再次出现,我只是好奇是否存在更好的、语义更丰富的解决方案。我不喜欢我的方法,因为我必须执行.replace来获取有关触发事件的元素的明显而重要的信息。你可以叫我书呆子,但这个问题再次出现,我只是好奇是否有更好的、语义更丰富的解决方案存在。谢谢josemota,你说得对-定义相反的东西更有意义,因为这个函数可以用于任何元素。就目前而言。。。为了使我的id和类没有javascript标识符,我想我会选择Mark建议的data-*方法。通过使用这个方法,我可以保持id和类为空;我的设计师和我不会互相攻击。谢谢josemota,你是对的-定义相反的东西更有意义,因为这个函数可以在上使用
任何元素。就目前而言。。。为了使我的id和类没有javascript标识符,我想我会选择Mark建议的data-*方法。通过使用这个方法,我可以保持id和类为空;我的设计师和我不会互相攻击。部落已经说话了。谢谢这正是我需要的确认。祝你一切顺利,部落已经说话了。谢谢这正是我需要的确认。祝你一切顺利。