Изменение класса подэлементов с помощью JQuery - PullRequest
1 голос
/ 24 января 2012

Я пытаюсь изменить класс всех элементов div с идентификатором led1, который находится в другом элементе div с идентификатором 1.

<div class="MACHINE">
  <div id="1" class="HOST">EMPTY
    <div id="led1" class="LED"></div>
  </div>
</div>

Я использую следующий код, но он меняет только текст «ПУСТО», а не класс. Ниже приведен фрагмент моего js-файла, который используется для изменения класса. По какой-то причине это не работает ...

Я надеюсь, что кто-то может направить меня в правильном направлении.

$.each(data, function(hst) {
    $.each(data[hst], function(key, value){
        var currClass =  $('#led'+ key).attr('class');
        switch(value)
        {
           case 'EMPTY': $('#led' + key).removeClass(currClass).addClass('LED ' + value);$('#' + key).html(value);break;
           case 'PROCESSING': $('#led' + key).removeClass(currClass).addClass('LED ' + value);$('#' + key).html(value);break;
           case 'FINISHED': $('#led' + key).removeClass(currClass).addClass('LED ' + value);$('#' + key).html(value);break;
           case 'REPLACE': $('#led' + key).removeClass(currClass).addClass('LED ' + value);$('#' + key).html(value);break;
         }
      });
   });
   },
   error: function() {
     alert('Ello');
     console.log("ERROR: show_host_status")     
   },
 });
},   
}

Ответы [ 2 ]

1 голос
/ 24 января 2012

Я вижу проблему.

 case 'EMPTY': $('#led' + key).removeClass(currClass).addClass('LED ' + value);$('#' + key).html(value);break;

Он устанавливает HTML "HOST" на любое значение (таким образом, удаляя светодиод).Попробуйте что-то вроде этого.

<div class="MACHINE">
    <div id="1" class="HOST">
        <div class='host-value'>EMPTY</div>
        <div id="led1" class="LED"></div>
    </div>
</div>

и ваш код в операторах case будет иметь вид

 case 'EMPTY': $('#led' + key).removeClass(currClass).addClass('LED ' + value);$(".host-value", $('#' + key)).html(value);break;

Затем вам придется изменить способ получения значения, поскольку он не просто является прямым элементом.из #key .host-value

0 голосов
/ 24 января 2012

Как указано в других ответах, ответ технически:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

извинения: @ dgvid

Попробуйте изменить <div id="1"> на <div id="host-1"> и обновите ваш скрипт соответственно

...