为什么jQuery选择器不返回对象而不是元素?

为什么jQuery选择器不返回对象而不是元素?,jquery,select,Jquery,Select,请帮助我理解为什么以下jquery select返回的是元素而不是预期的对象。谢谢 <div class="partner-tab partner-tab-opaque remove4" id="tab-5"> <a href="#"> <img class="blink" src="../skin/images/logo_endicia.png"> </a> </div> 代码 错误: 未捕获的TypeError:对

请帮助我理解为什么以下jquery select返回的是元素而不是预期的对象。谢谢

<div class="partner-tab partner-tab-opaque remove4" id="tab-5"> <a href="#">
    <img class="blink" src="../skin/images/logo_endicia.png">
    </a>
</div>
代码

错误:

未捕获的TypeError:对象[Object Object]没有“on”方法

以下是整个功能:

$(document).ready(function () {

    showPartnerTabs = function (flashUSPS) {
        $.post("<?=$this->baseUrl('partner/ajaxgetactive')?>", {}, function (data) {
            var partner = data.partners;
            //alert((data.partners).length);
            /* $("#footer .partner-tab").remove();*/
            var remove = 1;
            var doc = $(document);


            for (var id in data.partners) {


                if (partner[id].toggle_value == "on") {
                    remove++;
                    logo = partner[id].logo_file;
                    var pid = parseInt(id) + 1;

                    $("<div class=\"partner-tab partner-tab-opaque remove" + remove + "\" id=\"tab-" + pid + "\" />")
                        .appendTo("#footer");

                    $("<a href=\"#\" />")
                        .on("click", {
                            "partnerId": pid
                        }, function (e) {
                            return showPartnerSettings(e);
                        })
                        .appendTo("#footer #tab-" + pid);

                    var logochck = "tab-" + pid;
                    //alert(logochck);
                    if (flashUSPS && logochck == 'tab-5') {

                        $("<img class='blink' src='../skin/images/" + logo + "' />")
                            .appendTo("#footer #tab-" + pid + " a");
                    } else {
                        $("<img src='../skin/images/" + logo + "' />")
                            .appendTo("#footer #tab-" + pid + " a");
                    }

                    //$("</div>").appendTo("#footer");
                }

                /*
            else
            {

                $("<div class=\"partner-tab partner-tab-opaque remove" + remove + "\" id=\"tab-" + pid + "\" />")
               .appendTo("#footer");

                $("<a href=\"#\" />")
                    .on("click", { "partnerId": pid }, function(e){ return showPartnerSettings(e); })
                    .appendTo("#footer #tab-" + pid);       
                $("<img src='../skin/images/" + logo + "' />")
                    .appendTo("#footer #tab-" + pid + " a");
                //$("</div>").appendTo("#footer");  
            } 
            */
            }
            //alert($(".remove2").length);
            if ($(".remove2").length > 1) {
                $($(".remove2")[0]).remove();
                $($(".remove3")[0]).remove();
                $($(".remove4")[0]).remove();
            }
        }, "json");
    }

    $(".Partnerconnection ul li .controls .toggle-switch").on("click", null, function () {
        $(this).showPartnerTabs();
    });

    showPartnerTabs(<?=$flash?>);
});
正如我在一篇评论中提到的,在我将函数声明从“$.fn.showPartnerTabs…”更改为“showPartnerTabs…”之前,该函数运行良好。这有用吗?

因为$

更新

不幸的是,我无法重现错误

Uncaught TypeError: Object[object Object] has no method 'on'
但是,如果您已将$.fn.showPartnerTabs更改为showPartnerTabs,则此行

$(this).showPartnerTabs();
将抛出此错误

Object [object Object] has no method 'showPartnerTabs'
请确保以下内容属实

$实际上是jQuery,而不是任何其他库,即。 console.log$instanceof$prints true 或console.log$==jQuery打印true 您正在使用jQuery 1.7+,因为早期版本不支持 对,对
您正在创建一个新元素。如果要选择:

<a href ="#">

我要冒险一试,怀疑你可能需要:

$("div.partner-tab").on("click", 'a', {
    "partnerId": pid
}, function (e) {
    return showPartnerSettings(e);
});

showPartnerSettings做什么?哪一行导致此错误?为什么你的代码中会出现这样的错误?@RocketHazmat我试图重新设置问题的格式,使其看起来更好,但可能需要用户进行更多的编辑OP@MarkSchultheiss:我想我的格式好一点。我将错误移出了代码块。alert$.fn.jquery提供了什么?我希望看到TypeError$没有属性fn,这表明$不是jQuery。$如果$是jQuery,则单独不应返回未包装在jQuery对象中的dom元素。.on对新创建的元素有效:$函数始终返回jQuery对象,因此没有方法“on”不应出现。是其他原因导致了这个错误。
$('div.partner-tab a')
$("div.partner-tab").on("click", 'a', {
    "partnerId": pid
}, function (e) {
    return showPartnerSettings(e);
});