【问题标题】:Get passed element properties and attributes without many jQuery requests在没有很多 jQuery 请求的情况下获取传递的元素属性和属性
【发布时间】:2017-05-02 06:13:23
【问题描述】:

我有一些带有列表元素的列表,每个列表元素都有许多自定义属性,例如data-user-iddata-avatar 等。在每个列表元素上,我都附加了一个像这样的 jQuery 点击事件

$('*.friendListItem').on('click', function () {
    var userId = this.something;
    var avatar = this.foo;
}

现在,由于我在 this 对象中拥有了所需的所有属性和属性的传递元素,因此我正在寻找访问它们的最佳方式,因为使用 $(this).attr('data-user-id); 会导致不必要的 DOM遍历。

我现在能想到的使用纯Javascript的唯一方法就是这样

this.attributes['data-user-id'].nodeValue

这似乎不是很好和最佳的。

有没有更好的方法来做我想做的事?

【问题讨论】:

    标签: javascript jquery performance dom


    【解决方案1】:

    您可以使用Element.dataSet 属性。

    var userId = this.dataset.userId; //data-user-id
    

    注意:对于带连字符的属性,将使用 camelCase

    $('span').click(function() {
      console.log(this.dataset.userId)
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <span data-user-id="10">Click me<span>

    【讨论】:

    • meh,我可以通过更多的调试发现,谢谢:) 将标记为答案
    猜你喜欢
    • 2013-04-30
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2019-05-07
    • 2014-09-16
    • 2013-04-01
    相关资源
    最近更新 更多