为什么jQuery选择器不返回对象而不是元素?
请帮助我理解为什么以下jquery select返回的是元素而不是预期的对象。谢谢为什么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:对
<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);
});