无法阅读属性&to toLowerCase' of undefined - jquery.js:7760

时间:2016-07-13 11:18:22

标签: jquery

我有以下代码(感谢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;
            }

我犯了错误以及如何纠正错误?

提前致谢!

2 个答案:

答案 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";