【问题标题】:Output Class gives me [object Object]输出类给了我 [object Object]
【发布时间】:2014-08-04 04:27:17
【问题描述】:

我正在尝试获取一个元素类并将其作为字符串或纯文本使用:

<ul>
    <li class="list1"> list 1 </li>
    <li> list 1.1 </li>
    <li class="list"> list 2 </li>
    <li> list 3 </li>
</ul>

jQuery

_class = $('.list').closest('*[class]');
alert(_class);

This alerts [object Object] 为什么不提醒list1

Jsfiddle

【问题讨论】:

  • 因为_class是一个对象?
  • 它是 list1——它只是它的 jQuery 包装器。换成console.log(_class);
  • 小心解释反对意见
  • 因为alert()不是调试工具
  • 1. list1 不是 list 的父级 2. 学习使用 console.log() 3. _class 是一个对象,因此会提醒 [object Object]

标签: jquery string object


【解决方案1】:

你想要的是:

alert(_class.text());

alert(_class.html());

其实_class本身就是一个jQuery对象,所以它的字符串形式是[object Object]

编辑

如果您想检查对象,请使用

console.log(_class);

或者如果你想提醒上课,那就去吧

alert(_class.attr('class'));

编辑 2

如果你希望_class 持有 html 项目的类,你应该这样做

_class = $('.list').closest('*[class]').attr('class');

_class = $('.list').closest('*[class]')[0].className;

【讨论】:

  • 错,他们想要console.log() 而不是alert()
  • 我不想要文本或 html,我需要 list1 的“类”
  • @RUJordan:好吧,也许他/她真的想要那个 :) 无论如何更新了我的答案。
  • 我想使用 _class 而不仅仅是在控制台中输出。例如这不起作用:_class.replace(/ /g, '');
  • 我很高兴它有帮助 :) 请随意投票和/或接受答案!
【解决方案2】:

因为您引用的是object,所以它总是会以这种方式提醒它。

如果需要获取文本,可以使用

alert(_class.text());

要获取类,请使用

alert(_class.attr('class')); // class attribute

【讨论】:

    【解决方案3】:

    因为$('.list').closest('*[class]'); 是一个jQuery 对象,console.log(_class); 会显示对象的详细信息。

    编辑以获取您将执行的课程,例如_class.attr('class')

    【讨论】:

      【解决方案4】:

      试试:

      var _class = $(".list").prevAll("[class]").first().attr("class");
      alert (_class);
      

      您不应该使用.closest(),因为它会上升到 DOM 层次结构。你想在之前搜索兄弟姐妹,这就是.prevAll() 所做的,然后使用.first() 得到最近的。

      然后要获取class,请使用.attr("class")

      看到这个DEMO

      【讨论】:

        猜你喜欢
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多