Класс оповещения на основе его длины с помощью Javascript / jQuery - PullRequest
0 голосов
/ 26 июля 2011

Так что в основном я пытаюсь выбрать класс только "on", но на основе длины класса 2.

<div class="film cars-0317219 on"></div>
<div class="film wall-e-0910970 on"></div>
<div class="film off up-0945232"></div>
<div class="film on finding-nemo-0266543"></div>
<div class="film off cars-0317219"></div>

Что-то вроде:

$('div.film').live('click', function(){
var classes=$(this).attr("class").split(" ");
var status=classes[classes.length=2];

alert(status);
});

Должен предупредить "вкл"

Есть идеи, как получить предупреждение на основе длины строки? (Аналогично, если в коде поставить 3 вместо 2, должно появиться предупреждение «off»)

Ответы [ 4 ]

2 голосов
/ 26 июля 2011
var status=classes[1]; // the second element of the array

Лучший способ сделать то, что вы хотите сделать:

var isOn=$('.film').hasClass('on');

alert(isOn?'on':'off');

Помните, что $('.film') получит 1-й элемент с этим классом только при выполнении этих операций, если тольконаходится в обработчике как click, в этом случае вы бы использовали $(this)

1 голос
/ 26 июля 2011

Вы должны сделать:

alert(classes[1]);

массивы в javascript начинаются с нуля, поэтому второй элемент имеет индекс 1 (а третий элемент имеет индекс 2)

РЕДАКТИРОВАТЬ - теперь я понимаю, что ОП означает длину слова в (2 буквы):

var classes=$(this).attr("class").split(" ");
for (i = 0; i<classes.length; i++){
   if (classes[i].length ===2){
      alert(classes[i]);
   }
}
0 голосов
/ 26 июля 2011
function something(){
var classSplitOn =" ";
var desiredCount = 2;

var onClassSelector = ".on";

$('.film').each(function(index,elem){
  var classString = elem.className;
  if(classString && classString.split(classSplitOn).length == desiredCount){
    var alertVal = "off";
    if($(this).is(onClassSelector)){
      alertVal = "on";
    }
    alert(alertVal);
  }
});
}
0 голосов
/ 26 июля 2011

Если вы хотите предупреждать только классы определенной длины, вы можете действовать следующим образом

a=['film', 'cars-0317219', 'on'];//same as your var classes;
var status = a.filter(function(x){
 return x.length==this.size;
},{size:2});//contains ['on']

Однако фильтр реализован для Firefox, я не знаю для других браузеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...