Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   jQuery селекторы (https://javascript.ru/forum/misc/36211-jquery-selektory.html)

MCTrane 07.03.2013 16:52

jQuery селекторы
 
Не могу понять как прописать jquery селектор типа атрибут TZ больше 10, но меньше 20. Просто есть фильтр, где клиент пишет TZ от Х значения до Y значения. Сделал не рационально:
function FindTZ(){
	var tzot = Number(document.getElementById('tz_ot').value);
	var tzdo = Number(document.getElementById('tz_do').value);
	var all_list = $('ol.blc1 > li');
	for(var i=0;i<all_list.length;i++){
	all_list[i].style.display = 'none';
	}
	var list = [];
	var j = 0;
	while(tzot<tzdo){
	list[j] = [];
	list[j] = $('ol.blc1 > li[tz="'+tzot+'"]');
	j++;
	tzot++;
	}
	for(var x=0;x<list.length;x++){
	for(var c=0;c<list[x].length;c++){
	list[x][c].style.display = 'block';
	}
	}
	}

Подскажите, может есть в селекторах что-то типа li[tz>10 & tz<20]?

_SR_71_ 11.03.2013 01:29

Есть селекторы выбора после n-го элемента и перед n-ым элементов. n-ый элемент в этих селекторах не включается.
:gt(n) - после n-го
:lt(n) - перед n-ым

Deff 11.03.2013 04:31

MCTrane,
Если они идут друг за другом
$(SelStart).nextUntil(SelEnd) http://api.jquery.com/nextUntil/

_SR_71_ 14.03.2013 01:21

Кстати ещё есть метод .slice(begin, end), который полностью аналогичен методу для работы с массивами.

megaupload 14.03.2013 03:07

_SR_71_,
и это тут при чом?

_SR_71_ 14.03.2013 19:45

При том, что скажем нужно выбрать ячейки таблицы td с 11-ой по 20-ую,тогда это можно сделать так:
$('td').slice(10, 20)

Hoshinokoe 14.03.2013 20:57

MCTrane,

Используй метод filter.

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<ul>
<li data-tz="10">list item 10</li>
<li data-tz="12">list item 12</li>
<li data-tz="14">list item 14</li>
<li data-tz="16">list item 16</li>
<li data-tz="18">list item 18</li>
<li data-tz="20">list item 20</li>
</ul>
<script>
    //Прячем все элементы, которые не подходят под наше условие
    var all_items = $('ul > li'); 
    all_items.hide();
    var items = $('ul > li').filter(function(index) {
         var value = $(this).data('tz');
         return (value > 10 && value < 20);
    });
    items.show();
</script>


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