2016-09-26 74 views
0

我有一个小页面,我出来和产生的要素之一是测试一些jQuery的:.addClass和.removeClass不点火

<i class="fa fa-arrow-up personstatus" id="status.3140" style="color: #00ff00;" aria-hidden="true"></i>

我使用jQuery做一些修改:

$('.personstatus') 
     .click(function() { 
      var color = $(this).css("color"); 
      var personId = $(this).attr('id').replace('status.', ''); 
      $.get('changestatus/' + personId, 
       function(response) { 
        if (color == 'rgb(0, 255, 0)') { 
         alert('Down'); 
         $('#status.3140').removeClass('fa-arrow-up'); 
         $('#status.3140').addClass('fa-arrow-down'); 
         $('#status.3140').css('color', '#ff0000'); 
        } else { 
         alert('Up'); 
         $('#status.' + personId).removeClass('fa-arrow-down'); 
         $('#status.' + personId).addClass('fa-arrow-up'); 
         $('#status.' + personId).css("color", "#00ff00"); 
        } 
        alert('Finished'); 
       }); 
     }); 

它击中警戒线为我所期望的,但它不是应用.removeClass.addClass.css的。

我的jQuery代码另一部分,在那里这些优良的工作:

$('.showdetails') 
     .click(function() { 
      var personId = $(this).attr('id'); 
      document.getElementById('currentid').innerHTML = personId; 
      $.get('loadperson/basic/' + personId, 
       function(response) { 
        document.getElementById('persondetails_table').innerHTML = response; 
        $('.tab').removeClass('active'); 
        $('#persondetails_basictab').addClass('active'); 
        $('#person_details') 
         .lightbox_me({ 
          centered: true 
         }); 
       }); 
     }); 

我缺少什么?

+0

如何有人点击隐藏的元素? – depperm

+0

@depperm - 它不是一个隐藏的元素,它是一个字体真棒图标 –

+0

您应该尝试使用断点或调试器语句来代替警报。然后,您可以查看那些正在尝试操作的DOM值,看看它们是否实际可用。我的猜测是你的替换字符串可能是罪魁祸首。 – Swordfish0321

回答

1

ID有问题。您无法将其命名为“status.3140”。它在这里更详细的解释:CSS selector with period in ID

这是行不通的:

#status.3140 { 
 
    background-color: red; 
 
}
<div id="status.3140">Lorem ipsum</div>

这将工作:

#status\.3140 { 
 
    background-color: red; 
 
}
<div id="status.3140">Lorem ipsum</div>

但是,我强烈建议避免使用ID。最好将其更改为id="status-3140"

0

感谢@ Swordfish0321,并确认了@Daren Delima和@Barmar,'。'是我的问题。当我通过调试器时,它正在使用'。'解析字符串。作为一个字符串分离器。我能够逃脱''。和所有的作品。

感谢您指点我在正确的方向

+0

嗨基思,最好只是标记为你工作的答案,作为接受,告诉用户答案是正确的,离开它,而不是添加另一个答案。 – Celeo