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

Как я использую jQuery .each () на строке


// For Exmaple

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

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

//вышеупомянутый код не запускает предупреждение для каждого отделения в строке? Я не уверен почему?

5
задан kr1zmo 30 June 2010 в 22:42
поделиться

2 ответа

Как вы это делаете, вы ищете 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));
});​
8
ответ дан 14 December 2019 в 01:01
поделиться

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

Для итерации по элементам 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');
});
1
ответ дан 14 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

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