javascript - jQuery el.each() 返回 HTMLAnchorElement 而不是元素实例

标签 javascript jquery for-loop element each

我有以下 HTML 方案:

<section id="vids">
    <ul>
        <li>
            <a data-reference="12345" href="http://www.youtube.com/watch?v=12345" rel="external" target="_blank">
                <span>Video 14</span>
            </a>
        </li>
        <!-- ... -->
    </ul>
</section>

以及以下 JavaScript 部分:

$(document).ready(function() {
    console.log($("#vids a")); // Returns element instance collection

    $("#vids a").each(function(i, el) {
        console.log(this); // Returns HTMLAnchorElement instead of the element itself
        console.log(el); // Same here
        console.log(i); // Returns index
    });
});

我需要使用 .removeAttr() 和 .attr() 方法,但它不起作用,因为 .each() 返回元素原型(prototype)而不是其实例。简单的 for 循环也有同样的问题。

最佳答案

this 指的是 DOM 元素。要在此元素上使用 jQuery 功能,您需要将其包装在一个 jQuery 对象中,即:$(this)

$(document).ready(function() {
    console.log($("#vids a")); // Returns element instance collection

    $("#vids a").each(function(i, el) {
        console.log($(this)); // Will return [Object object]
        console.log($(el)); // Same 

        var $el = $(this);
        $el.removeAttr("attribute").attr("foo", "bar");
    });
});

关于javascript - jQuery el.each() 返回 HTMLAnchorElement 而不是元素实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429111/

相关文章:

javascript - 从 chrome 扩展中的谷歌分析 api 获取数据?

javascript - 如何禁用 ag-grid 中的单元格选择?

javascript - 在 jQuery 中禁用窗口滚动

css - 如何简洁地编写此 javascript 来显示/隐藏元素列表?

javascript - fullCalendar 中的日期循环

javascript - 将参数传递给 Marionette 组件?

javascript - 一段时间后页面变得无响应

jquery - Bootstrap 3 自动设置图片高度为div高度

c++ - 矩阵c++对角线元素之和

javascript - 从javascript中的字符串中获取2的组合