Как я использую jQuery .each () на строке
// For Exmaple
var mystring = '<div> bleh content </div> <div> bleh content </div>';
$('div', mystring).each(function(e) {
alert('do something');
});
//вышеупомянутый код не запускает предупреждение для каждого отделения в строке? Я не уверен почему?
Как вы это делаете, вы ищете 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 может выполнить находку.
// 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 ()
и вычисление продолжительности каждого из них путем умножения текущего номера итерации на количество миллисекунд, которое вы хотите отложить.
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));
});
В зависимости от ваших намерений код 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');
});