首页 > 解决方案 > TypeError:在非对象 JQUERY 上调用 Object.defineProperty

问题描述

当我尝试每个 HTML 元素数组和onclick该元素的句柄时,我在 Jquery 中遇到此错误。

Object.keys(collapsibles).forEach(function (key){
            $(collapsibles[key]).on('click' , function( e ) {
                e.preventDefault();
                const id = $(this).data("id");
                if (id !== _that.currentId) {
                    _that.closeCurrentOpen();
                    $(`[data-target="${$(this).data("id")}"]`).slideDown().addClass('open');
                    $(`[data-img="${$(this).data("id")}"]`).slideDown().addClass('arrowOpened');
                    return _that.currentId = id;
                } else {
                    return _that.closeCurrentOpen();
                }
            });
        });

错误出现在这一行

$(collapsibles[key]).on('click' , function( e ) {

可折叠值

var collapsibles = $('[data-behavior="collapsible"]');

标签: javascriptjquery

解决方案


下面的代码出错了,因为$(collapsibles[key])它不是 jQuery 对象:

$(collapsibles[key]).on('click' , function( e ) {//...});

请看这个小提琴。我在那里模拟了你的代码。您可以collapsibles在控制台中看到您似乎不认为这是一个不适合您的数组。

您可以改用此代码(jsFiddle):

$.each(collapsibles, function() {
  $(this).on('click', function() {
   // ...
  });
});

推荐阅读