Определите jQuery “eq”

Первый метод намного более гибок по стоимости, которую Вы упоминаете.

И второй подход никогда не жизнеспособно, когда Вы показали. Вместо этого Вы сделали бы (согласно Вашему первому примеру)

create table item_config (item_id int, colour varchar, size varchar, fabric varchar)

, конечно, это будет только работать, когда объем данных будет известен и не изменяется много.

Как правило любому приложению, которое требует изменяющийся DDL таблиц, чтобы сделать нормальную работу, нужно дать секунду и третьи мысли.

7
задан SilentGhost 15 September 2009 в 17:10
поделиться

5 ответов

С помощью этого HTML:

<ul>
    <li>Mario</li>
    <li>Luigi</li>
    <li>Princess</li>
    <li>Toad</li>
</ul>

И этого JavaScript:

alert($("ul li").eq(0).text()); // Mario
alert($("ul li").eq(1).text()); // Luigi
alert($("ul li").eq(2).text()); // Princess
alert($("ul li").eq(3).text()); // Toad
11
ответ дан 6 December 2019 в 07:07
поделиться

.eq (i) возвращает элемент из коллекции по указанному индексу i .

В примере из опубликованной вами ссылки:

$ ("p"). eq (1) .css ("color", "red")

В основном это говорит: "Найдите все элементы, которые соответствуют $ (" p "), затем возьмите второй и измените его цвет на красный. "

$ (" p ") соответствует всем

элементам в вашем документе. Теперь у вас есть их коллекция.

$ ("p"). Eq (1) сокращает эту коллекцию только до 2-го элемента.

the .css ("color", "red ") часть просто воздействует на этот элемент, чтобы изменить его цвет на красный.

9
ответ дан 6 December 2019 в 07:07
поделиться

Чтобы понять, как работает eq () , я думаю, это поможет понять, как $ () работает в jQuery. Когда вы указываете

$([selector],[context])

//which is the same as

$([context]).find([selector])

, возвращается объект jQuery (иногда называемый обернутым набором ), который, помимо других свойств, имеет свойство, начинающееся с 0 и увеличивается на 1 для каждого элемента, соответствующего селектору. Также установлено свойство length , поэтому совпадающие элементы объекта jQuery можно перебирать как массив (с помощью цикла for или таких команд, как each ([callback]) ).

Давайте теперь посмотрим на источник для eq ()

 eq: function( i ) {
  return this.slice( i, +i + 1 );
 },

, мы увидим, что eq () достигается с помощью команды slice () объекта jQuery, поэтому позвольте ' s также взгляните на этот

 slice: function() {
  return this.pushStack( Array.prototype.slice.apply( this, arguments ),
   "slice", Array.prototype.slice.call(arguments).join(",") );
 },

, а также на pushStack () , команду, довольно немного используемую внутри

 // Take an array of elements and push it onto the stack
 // (returning the new matched element set)
 pushStack: function( elems, name, selector ) {
  // Build a new jQuery matched element set
  var ret = jQuery( elems );

  // Add the old object onto the stack (as a reference)
  ret.prevObject = this;

  ret.context = this.context;

  if ( name === "find" )
   ret.selector = this.selector + (this.selector ? " " : "") + selector;
  else if ( name )
   ret.selector = this.selector + "." + name + "(" + selector + ")";

  // Return the newly-formed element set
  return ret;
 },

, мы видим, что pushStack принимает массив и возвращает новый объект jQuery. Элементы, которые образуют совпадающие элементы нового объекта jQuery, получаются путем вызова Function.apply в функции JavaScript Array slice и передачи аргументов jQuery. slice в качестве argsArray .

Команда get () , с другой стороны, более проста. Давайте посмотрим на источник

 // Get the Nth element in the matched element set OR
 // Get the whole matched element set as a clean array
 get: function( num ) {
  return num === undefined ?

   // Return a 'clean' array
   Array.prototype.slice.call( this ) :

   // Return just the object
   this[ num ];
 }

, вызываемый без аргумента для параметра num , объект jQuery преобразуется в массив с использованием Function.call в массиве JavaScript ] slice функция. Если число определено, тогда возвращается значение, содержащееся в соответствующем свойстве объекта jQuery, почти такое же, как в следующем

$([selector]).get(0)

//is the same as

$([selector])[0]
4
ответ дан 6 December 2019 в 07:07
поделиться

посмотрите пример из документации:

$("p").eq(1).css("color", "red")

$("p")                selects all paragraphs in your document
.eq(1)                selects the second element only
.css("color", "red")  applies css rule to the selected element
1
ответ дан 6 December 2019 в 07:07
поделиться

Похоже, вы зациклились на слове «индекс».

В этом случае «индекс» относится к определенному элементу в коллекции элементов. Таким образом, eq предоставит вам доступ к одному элементу в согласованном наборе элементов.

0
ответ дан 6 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: