То, как вы это делаете, вы ищете 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));
});