我正在扩展jQuery,以便可以轻松检索jQuery对象中第一个元素的tagName。这是我想出的,但似乎不起作用:

$.fn.tagName = function() {
    return this.each(function() {
        return this.tagName;
    });
}
alert($('#testElement').tagName());

有什么想法怎么了?

顺便说一句,我希望将其更多地用于测试,而不是用于生产。

最佳答案

尝试以下方法:

$.fn.tagName = function() {
    return this.get(0).tagName;
}
alert($('#testElement').tagName());

为了进一步说明您的原始示例为何不起作用的原因,each()方法将始终返回原始jQuery对象(除非jQuery对象本身已被修改)。要查看每个代码中发生了什么,下面是一些伪代码,显示了each()方法的工作方式:
function each(action) {
    for(var e in jQueryElements) {
        action();
    }
    return jQueryObject;
}

这不是each()真正实现的方式(可能是一个很长的距离),而是表明action()函数的返回值被忽略了。

关于javascript - 如何扩展jQuery以使其更容易检索tagName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/411688/

10-10 05:15