Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Определение второго класса, зная первый (https://javascript.ru/forum/jquery/57928-opredelenie-vtorogo-klassa-znaya-pervyjj.html)

Levelleor 26.08.2015 17:43

Определение второго класса, зная первый
 
У элемента 2 класса: один статический, второй динамический. Так как я знаю статический мне нужно определить первый класс, не подскажете как это сделать с помощью JQuery?

Благодарю за внимание!

Step48_rus 26.08.2015 17:46

можно спросить? а зачем тебе знать 2-ой класс?

Levelleor 26.08.2015 18:00

Можно. Может вы заодно альтернативу придумаете. Один класс описывает стили блока, а второ показывает айди предмета(в общем это по моему проекту). Предметы могут повторятся, потому айди не подходит. Я записал в класс, но пока что мне страшно смотреть на то что я нашел в интернете.

Deff 26.08.2015 18:01

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>

  <script>
  $(document).ready(function(){
    var static = 'a1', reg = new RegExp('\s*'+static+'\s*','')
    var cl2 = $.trim($("div."+static).attr('class').replace(reg,''));
    alert(cl2);
  });
  </script>
</head>
<body>
<div class="a1 b2">class="a1 b2"</div>
</body>
</html>

Deff 26.08.2015 18:04

Цитата:

Сообщение от Levelleor (Сообщение 385809)
Можно. Может вы заодно альтернативу придумаете. Один класс описывает стили блока, а второ показывает айди предмета(в общем это по моему проекту). Предметы могут повторятся, потому айди не подходит. Я записал в класс, но пока что мне страшно смотреть на то что я нашел в интернете.

Проще добавить новый атрибут data-id_target="ID" вместо второго класса (не нужно парсить регуляркой тогда)
Может использован и в качестве селектора
a1[data-id_target="ID"]{
  ...
}

рони 26.08.2015 18:04

Levelleor,
берёшь className элемента удаляешь что знаешь остаётся нужное

Levelleor 26.08.2015 18:06

рони,
Удалять явно не вариант... Хотя если потом вернуть... Возможно это хорошая идея. Но мне больше нравится другая.
Deff,
А обращаться этому через attr?

Levelleor 26.08.2015 18:08

Погодите секунду, дайте мне сформулировать вопрос поточнее, ибо я уже запутался...

рони 26.08.2015 18:09

Цитата:

Сообщение от Levelleor
Удалять явно не вариант... Хотя если потом вернуть

бред какойто, вариант Deff, тоже самое что я предложил

Deff 26.08.2015 18:11

Цитата:

Сообщение от рони
Levelleor,
берёшь className элемента удаляешь что знаешь остаётся нужное

Да тож хорошая идея
$(document).ready(function(){
    var static = 'a1'
    var cl2 = $("div."+static).clone().removeClass(static).attr('class');
    alert(cl2);
  });

рони 26.08.2015 18:13

Deff,
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>

  <script>
  $(document).ready(function(){
    var static = 'a1';
    var cl2 = $.trim($("div."+static)[0].className.replace(static,''));
    alert(cl2);
  });
  </script>
</head>
<body>
<div class="a1 b2">class="a1 b2"</div>
</body>
</html>

Levelleor 26.08.2015 18:16

Вот пример кода:
<div class="apeend_items"><div id="item_block_0" class="item_block active_item_block">
<div class="del_item_block">[X]</div>
<p>
Название:<input name="item_block_name_0" type="text">Комментарий:<input name="item_block_comm_0" type="text"></p>
<!-- Вот тут я начинаю добавлять дополнительные блоки -->
<div class="gameid3 chosen_item" style="background: rgba(0, 0, 0, 0) url(http://solomidcdn.com/images/champions_sprite_75.jpeg?v=1400720489) repeat scroll 0px -5700px / auto padding-box border-box;">
<div></div>
</div>
<div class="gameid3 chosen_item" style="background: rgba(0, 0, 0, 0) url(http://solomidcdn.com/images/champions_sprite_75.jpeg?v=1400720489) repeat scroll 0px -5700px / auto padding-box border-box;">
<div></div>
</div>
<!-- Тут конец -->
</div></div>


Далее я должен собрать все эти данные и отправить их на сервер для обработки:

for (i=0; i<$('.apeend_items>div').length; i+=1) {
submit[i]= [$(this).attr("id")), 'item_block_name_'+i+'', 'item_block_comm_'+i+'', [$('.apeend_items>div>input').attr('class').split(' ')[0]]];
}

Тут я собираю в каждую строку массива все данные, которые я хочу отправить. Справа видно что квадратные скобки создают еще один массив в массиве, в нем я собираю эти предметы. Но я пока понятия не имею как обратится ко всем предметам по очереди. Скобки явно неправильно написаны, они там просто что бы я помнил куда мне писать правильный код. Я очень надеюсь что понятно обьяснил, ибо это невероятно непонятно для меня :)

Deff 26.08.2015 18:27

рони,
Ога, регулярка излишняя

Levelleor 26.08.2015 18:35

Я думаю что единственный вариант это добавить все блоки в отдельный блок и считать их оттуда. Deff,
Не объясните как работает скрипт, который вы тут обсуждаете? Я не понимаю ничего :)

Deff 26.08.2015 18:43

$(document).ready(function(){
var static = 'a1'; //Cтaтичecкий клacc
$("div."+static).each(function(){ //ищем все элементы с этим статическим классом
var cl2 = $.trim(this.className.replace(static,'')); //Вычисляем второй класс см [url]http://javascript.ru/basic/regular-expression+[/url]
alert(cl2);
});
});

рони 26.08.2015 19:49

Цитата:

Сообщение от Deff
var cl2 = $("div."+static).clone().removeClass(static).attr( 'class');

твой вариант надёжнее


Часовой пояс GMT +3, время: 01:10.