Как найти в классе частичное совпадение и удалить только этот класс? - PullRequest
0 голосов
/ 01 февраля 2012

Хорошо, я храню переменные внутри класса, который будет использоваться для других элементов. Возможно, это не лучший подход для этого, но это легче сделать, когда я беру элемент с помощью $("tr").each(function{ // code }); Возможно, есть лучший атрибут для хранения этих переменных в ?? Или лучший общий способ сделать это?

Но в основном я пытаюсь использовать текст markRow: в качестве начальной строки для переменной, которую мне нужно определить, есть ли в этом классе tr элемент. Если в нем есть текст «markRow:», то мне нужно split(":"), только этот класс (потому что для элементов tr может быть определено более 1 класса) в массив и захватить только 2-й связанный массив. Затем, после того, как я использую эти переменные, мне нужно стереть все классы из каждого элемента tr, для которого определен markRow: внутри класса, но не хочу удалять любые другие классы, которые эти элементы tr могут иметь внутри их при этом.

Может кто-нибудь, пожалуйста, начните мне это? Думал о селекторе :contains для частичного совпадения строки markRow:, но не уверен, что это хорошо. Возможно, использование filter может как-то помочь?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Основываясь на моем понимании вашей проблемы, вот что вы можете попробовать.

$('tr').each(function(){
   var $tr = $(this), classes = $tr[0].className, finalClasses = [];

   //If className contains 'markRow:' then process it
   if(classes.indexOf('markRow:') != -1){
       $.each(classes.split(' '), function(i, class){
          //If class does not contain `markRow:' 
          //then add this class else ignore it
          if(class.indexOf('markRow:') == -1){
             finalClasses.push(class);
          }
       }); 
       //Finally combine all the classes not containing `markRow:` 
       //and set it to tr
       $tr[0].className = finalClasses.join(' ');
   }
}); 

Не обращая внимания на вашу проблему, я бы предложил вам использовать атрибуты данных для передачи данных вместе с элементом на странице. Получить данные из атрибутов данных становится очень просто.

например.

<div data-info="someInfo" id="div1"></div>

Чтобы получить значение атрибута data-info из элемента div1, используйте следующий код.

var info = $('#div1').data('info');

Для установки data-info вы можете использовать этот код

$('#div1').data('info', 'someInfo');

.data() ссылка: http://api.jquery.com/jQuery.data/

0 голосов
/ 01 февраля 2012

Если я понимаю, что вы хотите сделать, вы можете попробовать использовать метод data() из jQuery.

http://api.jquery.com/jQuery.data/

Это сделано для того, чтобы делать то, чтовы пытаетесь достичь, только правильно.

...