代码之家  ›  专栏  ›  技术社区  ›  SteinTech

无法在选择中使用动态指定的数据属性

  •  0
  • SteinTech  · 技术社区  · 7 年前

    我有一个带有类行的div元素。我对每个$.each($(“.row)进行赋值,并分配一个包含唯一id的数据id属性。 但是当我尝试选择元素时,它找不到id。

    如果我在html中定义了数据id,它将按预期工作,但是我需要动态地分配值。

    代码:

    <div class="row">
    ...
    </div>
    
    $.each($(".row"), function (i) {
        var $row = $(this);
    
        $row.data("id", i);
    });
    

    选择:

    $(".row[data-id='1']"); //returns nothing
    
    $(".row").data("id"); //returns 0 (expected)
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Martin Adámek    7 年前

    使用 $.attr('data-id', ...) 而不是 $.data('id', ...) .

    还要注意,您正在尝试访问元素 data-id=1 ,如果只有一个就不存在了 .row 元素。

    $.each($(".row"), function (i) {
        var $row = $(this);
        $row.attr("data-id", i);
    });
    
    console.log($('.row[data-id=1]'));
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div class="row">
    1...
    </div>
    
    <div class="row">
    2...
    </div>

    $.data 将设置内部数据属性值,而 $.attr