请帮助我理解为什么下面的jquery返回一个元素而不是预期的对象。谢谢。
<div class="partner-tab partner-tab-opaque remove4" id="tab-5"> <a href="#">
<img class="blink" src="../skin/images/logo_endicia.png">
</a>
</div>代码
$("<a href=\"#\" />")
.on("click", {
"partnerId": pid
}, function (e) {
return showPartnerSettings(e);
})
.appendTo("#footer #tab-" + pid);
// $("<a href=\"#\" />")[ < a href = "#" > < /a> ]错误:
Uncaught : Objectobject对象没有“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().”。这个有用吗?
发布于 2013-08-15 16:53:45
因为$("<a href=\"#\" />")不是选择器
您正在创建一个新的锚元素。
除此之外,您的代码似乎是正确的。请参阅jsFiddle
更新
不幸的是,我无法重现这个错误。
Uncaught TypeError: Object[object Object] has no method 'on'但是,如果您已将$.fn.showPartnerTabs()更改为showPartnerTabs(),则这一行
$(this).showPartnerTabs();会抛出这个错误
Object [object Object] has no method 'showPartnerTabs'请确保以下内容是正确的
console.log($("<a href=\"#\" />") instanceof $)打印true或console.log($==jQuery)打印true。.on。发布于 2013-08-15 16:54:12
您正在创建一个新元素。如果要选择:
<a href ="#">使用适当的选择器,在您的情况下:
$('div.partner-tab a')发布于 2013-08-15 17:13:39
我要在这里冒险,怀疑你可能需要:
$("div.partner-tab").on("click", 'a', {
"partnerId": pid
}, function (e) {
return showPartnerSettings(e);
});https://stackoverflow.com/questions/18257499
复制相似问题