尝试获取单个项目时要使用的属性(或…);从jQuery中的列表中选择id?

尝试获取单个项目时要使用的属性(或…);从jQuery中的列表中选择id?,jquery,Jquery,修订版:我在页面上有一个列表项,是我根据数据库记录(消息)创建的。每个记录都包含一个Id值,我当前正在将该值放入每个消息中。我想做的是当他们点击一个视图链接来获取消息的Id值,这样我就可以用javascript来操作它 生成的html如下所示: <div id"messages"> <div class="message"> A cool message <a href="/Message/View/1" id="message_1" class="vi

修订版:我在页面上有一个列表项,是我根据数据库记录(消息)创建的。每个记录都包含一个Id值,我当前正在将该值放入每个消息中。我想做的是当他们点击一个视图链接来获取消息的Id值,这样我就可以用javascript来操作它

生成的html如下所示:

<div id"messages">
  <div class="message">
    A cool message <a href="/Message/View/1" id="message_1" class="viewMessage">View</a>
  </div>
  <div class="message">
    A cool message <a href="/Message/View/2" id="message_2" class="viewMessage">View</a>
  </div>
  <div class="message">
    A cool message <a href="/Message/View/3" id="message_3" class="viewMessage">View</a>
  </div>
  <div class="message">
    A cool message <a href="/Message/View/4" id="message_4" class="viewMessage">View</a>
  </div>
</div>

我可以做一个属性吗?实际上我也会尝试这个,但是我考虑的是整个xhtml严格的东西,所以我认为有比这样做更好的方法。

尝试访问单击链接的id

试试这个

$('.viewMessage').click(function() {
  var id = $(this).attr('id');
});

正在尝试访问已单击链接的id

试试这个

$('.viewMessage').click(function() {
  var id = $(this).attr('id');
});

我假设您希望提取click处理程序中id的数字部分

$('.viewMessage').click( function() {
   var id = this.id.replace(/message_/,'');
   ...now go use it...
});

我假设您希望提取click处理程序中id的数字部分

$('.viewMessage').click( function() {
   var id = this.id.replace(/message_/,'');
   ...now go use it...
});

这将从锚的href中获取一个数字

$('.viewMessage').click(function() {
    var id = this.href.match(/\d+/);
});
如果要使用类似于
.messageId
的内容,请首先进行预处理:

$('.viewMessage').each(function() {
    this.messageId = this.href.match(/\d+);
    // Or, to be more safe:
    this.messageId = parseInt(this.href.match(/\d+), 10);
}).click(function() {
    alert(this.messageId);
});

这将从锚的href中获取一个数字

$('.viewMessage').click(function() {
    var id = this.href.match(/\d+/);
});
如果要使用类似于
.messageId
的内容,请首先进行预处理:

$('.viewMessage').each(function() {
    this.messageId = this.href.match(/\d+);
    // Or, to be more safe:
    this.messageId = parseInt(this.href.match(/\d+), 10);
}).click(function() {
    alert(this.messageId);
});

如果您想采用(X)HTML5,它允许名称以“data-”开头的任意属性用于这种情况。因此,这可能类似于

,如果您想采用(X)HTML5,它允许名称以“data-”开头的任意属性用于这种情况。因此这可能类似于

,我相信在下一个html规范中有一个自定义属性的规定。您可以使用数据作为前缀-
所以,数据id是有效的


顺便说一句:我通常使用自定义属性。

我相信在下一个html规范中有一个自定义属性的规定。您可以使用数据作为前缀-
所以,数据id是有效的


顺便说一句:我通常使用自定义属性。

我真的不明白,当您确实只需要
1
时,为什么要设置
id=“message\u 1”
,但假设有原因并且您不会更改它,您可以使用
rel
属性

<div id"messages">
    <div class="message">
        A cool message <a rel="1" href="/Message/View/1" id="message_1" class="viewMessage">View</a>
        A cool message <a rel="2" href="/Message/View/1" id="message_2" class="viewMessage">View</a>
    </div>
</div>

我真的不明白,当您确实只想要
1
时,为什么要设置
id=“message_1”
,但假设有原因并且您不会更改它,您可以使用
rel
属性

<div id"messages">
    <div class="message">
        A cool message <a rel="1" href="/Message/View/1" id="message_1" class="viewMessage">View</a>
        A cool message <a rel="2" href="/Message/View/1" id="message_2" class="viewMessage">View</a>
    </div>
</div>


你到底想做什么?为什么需要数据库ID?单击邮件链接时会发生什么情况?您到底想做什么?为什么需要数据库ID?当你点击邮件链接时会发生什么?不,我不是。我澄清了这个问题。对不起,误会了。不,我不是。我澄清了这个问题。很抱歉误解了。好的,这是真的,但是有没有一种不用字符串操作的方法呢?@rball:id是一个字符串。不管发生什么,你都必须以某种方式操纵它。好吧,这是真的,但是有没有一种方法可以不操纵字符串就完成它?@rball:id是一个字符串。不管发生什么,你都得用某种方式来操纵它。这肯定比我以前做的更干净。我会试试看它是否管用。这肯定比我以前喝的更干净。我会试一试,看看它是否有效。以数字开头的ID不是有效的HTML。我可以发布帖子\u 1消息\u 1主题\u 1线程\u 1回复\u 1…你明白了。这可能不完全是rel属性应该做的,但如果你这样使用它,你将不会被验证程序破坏,你可以轻松添加rel=“1”当你呈现链接时,将其等。以数字开头的ID不是有效的HTML。我可以发布帖子\u 1消息\u 1主题\u 1线程\u 1回复\u 1…你明白了。这可能并不完全是rel属性应该做的,但是如果你以这种方式使用它,你将不会被验证器破坏,你可以轻松添加rel=“1”在渲染链接时,将其添加到链接。