2016-04-19 2 views
1

Я пытаюсь выполнить цикл через массив элементов, а затем проверить каждый экземпляр каждого элемента. Это, как я это делаю:Как пройти через массив, вызывающий jquery.each для каждого элемента?

var elements = ["h1","h2","h3","h4","p","strong","label","span","a"]; 
function targetZWS(){ 
    for (var i = 0; i < elements.length; i++) { 
     var item = $(".page-content "+elements[i]); 
     $(item).each(function() { 
      checkElement(this); 
     }); 
    } 
} 

Это бросает предупреждение, что я создаю функцию внутри цикла, как этого избежать?

+0

бы сделать 'функцию checkElements', что перебирает все ваши вопросы и вызова он изнутри цикла все еще вызывает предупреждение? – IrkenInvader

+0

У этого JavaScript нет такого предупреждения. Вы должны использовать linter. Возможно, вы сможете настроить linter для игнорирования этой строки. Или избавитесь от цикла, изменив свой код на '$ (". Page-content "). Find (elements.join (',')). Each (...)'. Или измените 'checkElement', чтобы принять индекс как первый аргумент, а элемент - вторым аргументом и использовать' item.each (checkElement) '. Или оба. –

ответ

1

Вы слишком стараетесь :) JQuery позволяет вводить несколько параметров в одном селекторе.

function targetZWS(){ 
    $("h1,h2,h3,h4,p,strong,label,span,a").each(function() { 
      checkElement(this); 
     }); 
    } 
} 

http://api.jquery.com/multiple-selector/

0

Использование .each() Переберите массива как:

$(function() { 
    var elements = ["h1","h2","h3","h4","p","strong","label","span","a"]; 
    $.each(elements, function(index, value) { 
    alert(value); 
    var sel = ".page-content" + value 
    var item = $("sel"); 
     $(item).each(function() { 
      checkElement(this); 
     }); 
    }) 
}) 

DEMO

Смежные вопросы