jQuery element.closest(...).attr在使用每个时都不是函数

The*_* Oz 6 javascript jquery coffeescript

迭代一些DOM元素时,我发现不可能在它们上使用.data或.attr:

$('.running').each (index, element) =>
    console.log element.closest('[data-id]')
Run Code Online (Sandbox Code Playgroud)

抓住我

<section class="job-block" data-id="240"></section>
...
Run Code Online (Sandbox Code Playgroud)

$('.running').each (index, element) =>
    console.log element.closest('[data-id]').data('id')
Run Code Online (Sandbox Code Playgroud)

未捕获的TypeError:element.closest(...).data不是函数

Pra*_*lan 5

closest()您使用的方法是原生 JS 方法,它返回 DOM 元素对象,因为element引用了 DOM 元素对象。


有多种获取属性值的选项,可以从datasetproperty获取:

$('.running').each (index, element) =>
    console.log element.closest('[data-id]').dataset.id
Run Code Online (Sandbox Code Playgroud)


或者通过 jQuery 包装元素并使用data()方法。

$('.running').each (index, element) =>
    console.log $(element.closest('[data-id]')).data('id')
Run Code Online (Sandbox Code Playgroud)


或者element用 jQuery包装并使用 jQueryclosest()方法。

$('.running').each (index, element) =>
    console.log $(element).closest('[data-id]').data('id')
Run Code Online (Sandbox Code Playgroud)