Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   ефектиный селектор на Jquery (https://javascript.ru/forum/jquery/13139-efektinyjj-selektor-na-jquery.html)

ejik 17.11.2010 11:23

ефектиный селектор на Jquery
 
Необходимо из кучи HTML кода выбрать те элементы, у которых установлено свойство "name" - только эти элементы мне необходимы

Никак не могу придумать хороший селектор.

вот для примера код:
<span style="position: absolute; left: 10px; width: 83px;" class="OELabel">From:</span>
<input name="fromDate" id="getRepFromDate" type="text" value="17.11.2010" style="position: absolute; left: 90px; width: 90px;" class="control hasDatepicker">

<span style="position: absolute; left: 10px; width: 83px;" class="OELabel">To:</span>
<input name="toDate" id="getRepFromDate" type="text" value="17.11.2010" style="position: absolute; left: 90px; width: 90px;" class="control hasDatepicker">

<span style="position: absolute; left: 10px; width: 83px;" class="OELabel">Instruments</span>
<select name="instruments" class="combo" style="width: 95px; left: 90px; position: absolute;">
	<option selected="selected" value=" ">All</option>
	<option value="123">123</option>
	<option value="456">456</option>
</select>

<span style="position: absolute; left: 10px; width: 83px;" class="OELabel">IsShowLots</span>
<input name="IsShowLots" type="checkbox" style=" position: absolute; left: 90px;">

Gvozd 17.11.2010 11:28

ejik,
в гугле забанили?
или может быть на jquery.com?
потратили бы хоть пять минут на поиск, прежде чем лезть задавать идиотские вопросы, и тратить чужое время!

Kolyaj 17.11.2010 11:28

Заведомо самый хороший "селектор":
var elems = document.getElementsByTagName('*');
for (var i = 0; i < elems.length; i++) {
    if (elems[i].name) {
        var elem = elems[i];
        // elem имеет name, делаем с ним что-нибудь.
   }
}

ejik 17.11.2010 11:58

Gvozd,
Хороший ответ
Kolyaj,
Спасибо, но хотелось бы получить что либо в стиле:
var importantFieldsSelector = $("#Contant > div.myClass");
или
$("input[@name]")
вот только мне не по классу надо искать, и не по инпутам. К тому же строка
$("//input[@name]")
в консоли хрома выдает ошибку
Syntax error, unrecognized expression: //input[@name]

UPD:

//input[@name - ошибка вызвана не очень качественным учебным материалом "@" лишняя(

Нашел $("#Contant > div [name]")

Правда есть один вопрос, как себя поведет Jquery, найдет все элементы с полем "name", потом те что в div, потом те что в div с id==Contant
или
найдет #Contant в нем элементы с "name", а затем те что в дивах?

думаю модеры потрут тему...

B@rmaley.e><e 17.11.2010 12:33

Цитата:

Сообщение от Kolyaj
elems.length

А не дорого ли дергать length у NodeList на каждой итерации?

Kolyaj 17.11.2010 12:52

B@rmaley.e><e,
если вы считаете, что это затормозит ваш скрипт, закэшируйте значение. Эта проблема не стоит даже этих двух сообщений, которые ради неё были созданы.

monolithed 17.11.2010 13:21

Цитата:

Сообщение от B@rmaley.e><e
А не дорого ли дергать length у NodeList на каждой итерации?


<a href="#1" name="a">color</a>
<a href="#2">color</a>
<a href="#3" name="b">color</a>

<script type="text/javascript">
window.onload = function(){
  var elems = document.getElementsByTagName('*');
  for(var i=0, j=0; j=elems[i]; i++) {
    if(elems[i].name) {
        elems[i].style.color = 'red';  
     }
  }
};
</script>


Но в любом случае это нужно допиливать

Цитата:

Сообщение от ejik
Необходимо из кучи HTML кода выбрать те элементы, у которых установлено свойство "name" - только эти элементы мне необходимы

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
$(function(){
  $("a[name]").css('color','red');
});
</script>
<a href="#1" name="a">color</a>
<a href="#2">color</a>
<a href="#3" name="c">color</a>


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