首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么jQuery选择器不返回一个对象而不是一个元素?

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

Stack Overflow用户
提问于 2013-08-15 16:48:47
回答 3查看 156关注 0票数 0

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

代码语言:javascript
运行
复制
<div class="partner-tab partner-tab-opaque remove4" id="tab-5"> <a href="#">
    <img class="blink" src="../skin/images/logo_endicia.png">
    </a>
</div>

代码

代码语言:javascript
运行
复制
$("<a href=\"#\" />")
    .on("click", {
    "partnerId": pid
}, function (e) {
    return showPartnerSettings(e);
})
.appendTo("#footer #tab-" + pid);

// $("<a href=\"#\" />")[ < a href = ​"#" > ​ < /a> ]

错误:

Uncaught : Objectobject对象没有“on”方法

以下是整个功能:

代码语言:javascript
运行
复制
$(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().”。这个有用吗?

EN

回答 3

Stack Overflow用户

发布于 2013-08-15 16:53:45

因为$("<a href=\"#\" />")不是选择器

您正在创建一个新的锚元素。

除此之外,您的代码似乎是正确的。请参阅jsFiddle

更新

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

代码语言:javascript
运行
复制
Uncaught TypeError: Object[object Object] has no method 'on'

但是,如果您已将$.fn.showPartnerTabs()更改为showPartnerTabs(),则这一行

代码语言:javascript
运行
复制
$(this).showPartnerTabs();

会抛出这个错误

代码语言:javascript
运行
复制
Object [object Object] has no method 'showPartnerTabs'

请确保以下内容是正确的

  1. $实际上是jQuery,而不是任何其他库,即console.log($("<a href=\"#\" />") instanceof $)打印true或console.log($==jQuery)打印true。
  2. 使用jQuery 1.7+是因为早期版本不支持.on
票数 5
EN

Stack Overflow用户

发布于 2013-08-15 16:54:12

您正在创建一个新元素。如果要选择:

代码语言:javascript
运行
复制
<a href ="#">

使用适当的选择器,在您的情况下:

代码语言:javascript
运行
复制
$('div.partner-tab a')
票数 2
EN

Stack Overflow用户

发布于 2013-08-15 17:13:39

我要在这里冒险,怀疑你可能需要:

代码语言:javascript
运行
复制
$("div.partner-tab").on("click", 'a', {
    "partnerId": pid
}, function (e) {
    return showPartnerSettings(e);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18257499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档