从父级获取ID

问题描述

|
<div rownumber=\"0\" messageid=\"112\" class=\"post\" style=\"position: relative; top: 0px;\">
    <div class=\"post_body\">hey hey hey</div>
    <div class=\"post_info\" style=\"top: 0px;\">
        <ul>
            <li class=\"vote\"><a href=\"#\">vote up</a></li>
            <li class=\"flag\"><a href=\"#\">flag</a></li>
        </ul>
    </div>
</div>
当我单击\'vote up \'或\'flag \'
href
链接时,我希望能够从包含
div
的主元素中获取
messageId
。我该怎么办?     

解决方法

        
$( \'li.vote a,li.flag a\' ).click( function( e )
{
    var msgId = $( this ).closest( \'div.post\' ).attr( \'messageid\' );

    e.preventDefault();
} );
演示:http://jsfiddle.net/JAAulde/jQuGP/4/ 不过,最好使用
data-
属性和jQuery
.data()
方法,因为它会更符合HTML标准:http://jsfiddle.net/JAAulde/jQuGP/5/     ,        使用
closest
$(\'.post a\').click( function() {
    var msgId = $(this).closest(\'.post\').attr(\'messageid\');
});
另外,您应在自定义属性上使用“ 5”前缀,以确保符合网络标准。     ,        您可以使用
.closest()
在树中上移,直到找到匹配项。它比
.parents()
更适合此处,后者将过滤链接的所有父级(可能在较大标记中包含很多元素),而
.closest()
在找到匹配项时停止。
$(\'li.vote a,li.flag a\').click(function () {
    var id=$(this).closest(\'div.post\').attr(\'messageid\');
});
另一个重要的事情: 要在HTML元素上存储任意数据,应使用
data-
属性(在HTML5标准中引入)。 因此,在您的示例中,HTML为:
<div data-rownumber=\"0\" data-messageid=\"112\" class=\"post\"...
另一个优点(除了有效的HTML文档之外)是您可以使用jQuery
.data()
函数简单地获取这些数据:
var id=$(this).closest(\'div.post\').data(\'messageid\');
具有
data-
属性的jsFiddle演示     ,        这未经测试,但是类似的方法可能有效:
$(\".vote a\").click(function() {
    var value = $(this).parents(\".post\").attr(\"messageid\");

    alert(value);
});
    ,        您可以通过在包含消息ID的
<a>
元素上动态输出ID来解决该问题吗? 就像是
<a href=\"#\" id=\"message-123\">
    ,        
$( \'li.vote,li.flag\' ).click(function() {
    var msgId = $(this).closest(\'[messageId]\').attr(\'messageId\');
)}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...