我有以下代码(感谢Mario的帮助)
function toggle() {
var noticeToggleElement = $(this);
var newStatus = noticeToggleElement.val() === "Hide" ? "Show" : "Hide";
noticeToggleElement.val(newStatus);
if (newStatus == "Show") {
noticeToggleElement.css('overflow','hidden');
noticeToggleElement.css('height','80px');
$("div.notice-wrap").css('height','187px');
}
else {
noticeToggleElement.css('overflow','visible');
noticeToggleElement.css('height','100%');
$("div.notice-wrap").css('height','100%');
}
}
和HTML(包装" notice-wrap"):
<div class="notice-title">
Title
</div>
<div class="notice-content">
Content text
</div>
<div class="notice-toggle" value="Hide" onclick="toggle()">
<a href="#"><img src="../img/icon_rollout.png"></a>
</div>
然后我尝试打开切换,我有这个错误:
jquery.js:7760未捕获的TypeError:无法读取属性&#39; toLowerCase&#39;未定义的
在我添加上面的代码后出现错误,但似乎是第7760行的错误:
1.3中({ val:function(value){ var hooks,ret,isFunction, elem = this [0];
if ( !arguments.length ) {
if ( elem ) {
hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
return ret;
}
我犯了错误以及如何纠正错误?
提前致谢!
答案 0 :(得分:0)
我看到你可能正在调用函数从脚本中的任何位置切换,但在你的函数中你没有传递这个关键字的引用,只要我认为你的函数应该是这样的
std::cout << std::logical_and<bool>()(fn1, fn2)()
当你调用该函数时,你必须传递目标元素的引用。
你的html调用就像是跟随。
function toggle(elmRef) {
var noticeToggleElement = $(elmRef);
var newStatus = noticeToggleElement.attr('data-value') === "Hide" ? "Show" : "Hide";
noticeToggleElement.attr('data-value',newStatus);
if (newStatus == "Show") {
noticeToggleElement.css('overflow','hidden');
noticeToggleElement.css('height','80px');
$("div.notice-wrap").css('height','187px');
}
else {
noticeToggleElement.css('overflow','visible');
noticeToggleElement.css('height','100%');
$("div.notice-wrap").css('height','100%');
}
}
答案 1 :(得分:0)
你可以尝试:(首先从你的html中删除onclick)
$(document).on("click", ".notice-toggle", function(event){
var noticeToggleElement = $(event.target);
var newStatus = noticeToggleElement.attr('data-value') === "Hide" ? "Show" : "Hide";
noticeToggleElement.attr('data-value', newStatus);
if (newStatus == "Show") {
noticeToggleElement.css('overflow','hidden');
noticeToggleElement.css('height','80px');
$("div.notice-wrap").css('height','187px');
}
else {
noticeToggleElement.css('overflow','visible');
noticeToggleElement.css('height','100%');
$("div.notice-wrap").css('height','100%');
}
});
我非常确定您在调用属性value
时调用了错误的属性data-value
:
var newStatus = noticeToggleElement.val() === "Hide" ? "Show" : "Hide";
应该是:
var newStatus = noticeToggleElement.attr('data-value') === "Hide" ? "Show" : "Hide";