jQuery .each () со строкой - PullRequest
       1

jQuery .each () со строкой

5 голосов
/ 01 июля 2010

Как использовать jQuery .each () в строкеЯ не уверен, почему?

Ответы [ 2 ]

8 голосов
/ 01 июля 2010

То, как вы это делаете, вы ищете div элементов внутри переданных элементов. В основном эквивалентно выполнению .find().

То, что вы хотите, это filter(), который отфильтрует элементы верхнего уровня в коллекции, которую вы передали.

Проверьте это здесь: http://jsfiddle.net/u5uDg/

var mystring = '<div> bleh content </div> <div> bleh content </div>';

$(mystring).filter('div').each(function(e) {
    alert('do something');
});

Если вы хотите использовать свой подход, вам нужно предоставить элементам div родительский элемент, по которому jQuery может выполнить поиск.

http://jsfiddle.net/u5uDg/1/

      // Added parent <div> element
var mystring = '<div><div> bleh content </div> <div> bleh content </div></div>';

$('div', mystring).each(function(e) {
  alert('do something');
});

Как требуется в вашем комментарии, вы можете отложить выполнение кода в .each(), используя setTimeout() и достигнув продолжительности каждого, умножив текущий номер итерации на количество миллисекунд, которые вы хотите отложить. *

http://jsfiddle.net/u5uDg/6/

var mystring = '<div> bleh content </div> <div> bleh content </div>';

   // Get the length
var length = $(mystring).filter('div').length;

$(mystring).filter('div').each(function(e) {
    // setTimeout is used to delay code from executing.
    // Here we multiply e (which is the index of the current 
    //   iteration) by 2000 milliseconds, so each iteration
    //   is delayed by an additional 2000ms
    (function(th) {
        setTimeout(function() {
                 alert($(th).text());
                 if(!--length) { alert('done'); } // alert if done
        }, e * 2000);
    }(this));
});​
1 голос
/ 01 июля 2010

В зависимости от вашего намерения, код jQuery будет выглядеть по-разному.

Чтобы перебирать элементы div с содержимым, элементы div не нужно назначать переменной в javascript.Они могут просто жить в html:

<div class="mystring">bleh content</div>
<div class="mystring">blehhh content</div>

Тогда ваш скрипт будет выглядеть так, как показано ниже, и вы должны увидеть предупреждения:

$('div.mystring').each(function(e) {
  alert('do something');
});

Если вы пытаетесь перебратьмассив mystring, ваш код будет выглядеть так:

var mystring = '<div class="mystring">bleh content</div><div class="mystring">blehhh content</div>';
$.each(mystring, function(e) {
  alert('do something');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...