首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要添加多个类?

为什么要添加多个类?
EN

Stack Overflow用户
提问于 2018-10-16 06:20:13
回答 5查看 90关注 0票数 0

我试图添加一个类,它的左边框是绿色、橙色或红色,这取决于一些json。这三个类被称为容易,中等,硬。

代码语言:javascript
复制
$.getJSON("http://example.com/wp-json/wp/v2/posts", function(data){
    var fetch_info = '';
    $.each(data, function(key, value){
        $('.result').append("<section>" +  value.title.rendered + value.content.rendered + "</section>");
        if (value.acf.sick === "Easy") {
            $('section').addClass('easy');
        } 
        if (value.acf.sick === "Medium") {
            $('section').addClass('medium');
        } 
        if (value.acf.sick === "Hard") {
            $('section').addClass('hard');
        }
    }); 
});

这是我收到的信:

acf {1}病:难

生病可以是容易的,中等的和困难的,所以我想:

代码语言:javascript
复制
if (value.acf.sick === "Easy") {
            $('section').addClass('easy');
        } 

只会将类easy添加到带有value.acf.sick === "Easy“的部分,但出于某种原因,我的HTML看起来如下…

代码语言:javascript
复制
<section class="hard easy medium">...</section>
<section class="easy hard medium">...</section>
<section class="hard easy medium">...</section>
<section class="easy medium">...</section>
<section class="medium">...</section>
<section class="medium">...</section>

所有的第一个类都是正确的,但出于某种原因,它添加了多个类,我似乎不知道为什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-10-16 07:12:00

在这段代码中,您要做的是选择所有的section elements,并附加当前的class。而您只是想要操作当前的jQuery object

代码语言:javascript
复制
$('section').addClass('hard');

在第一个循环中,这将选择唯一的section tag。在第二个循环中,它将选择两个section tags。在第三个..。

试着用jQuery objects来思考。首先创建一个jQuery object并将其附加到现有的HTML元素中。然后插入class。您可以选择直接或稍后对其进行append

代码语言:javascript
复制
$.getJSON('http://example.com/wp-json/wp/v2/posts', function(data){
  var fetch_info = '';

  $.each(data, function(key, value){
      // create a jQuery object and append it to a HTML element
      var section = $('<section>', {
                      text: value.title.rendered + value.content.rendered
                    }).appendTo('.result');

      // Add a class based on the JSON value
      if (value.acf.sick === 'Easy') {
          section.addClass('easy');
      } 
      else if (value.acf.sick === 'Medium') {
          section.addClass('medium');
      } 
      else if (value.acf.sick === 'Hard') {
          section.addClass('hard');
      }

      // or append it later
      // $('.result').append(section);
  }); 
});
票数 1
EN

Stack Overflow用户

发布于 2018-10-16 06:26:32

因为您不是将类名添加到特定元素,而是将类名添加到每个“每个”迭代中的所有区段元素中。在循环中使用$(This).addClass(.)而不是$(‘节’).addClass ..。

票数 1
EN

Stack Overflow用户

发布于 2018-10-16 06:56:39

$('section')选择DOM中当前的每个元素,因此您当前添加的元素和前面添加的所有元素。

要解决这个问题,首先可以将新创建的部分保存到变量中,然后将calss添加到该元素中。

代码语言:javascript
复制
$.each(data, function(key, value) {
  var section = $("<section>" + value.title.rendered + value.content.rendered + "</section>");
  $('.result').append(section);

  if (value.acf.sick === "Easy") {
    section.addClass('easy');
  }
  if (value.acf.sick === "Medium") {
    section.addClass('medium');
  }
  if (value.acf.sick === "Hard") {
    section.addClass('hard');
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52829052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档