2013-09-16 4 views
4

У меня довольно странная ситуация, когда я пытаюсь перебирать флажки с помощью each. Проблема в том, что она не хочет идти в цикле.jQuery.each не работает

Просьба сообщить, почему?

Это функция

function AddTheProduct() { 
    var txtTopicsGuids = ""; 

    var checkedTopics = document.getElementsByName("chkRelatedTopics"); 
    $(checkedTopics).each(function() { 
     if ($(this).is(":checked")) { 
      //action 
     } 
    }); 

и разметка

{{each Items}} 
    <tr> 
     <td> 
      <input type='hidden' name='hidTopicsDomain' value='${DomainObjectKey}'/> 
      <input type='checkbox' name='chkRelatedTopics' value='${subject}'/> 
     </td> 
    </tr> 
{{/each}} 
+1

Я думаю, вы должны использовать '$ .each' здесь. –

+1

Они делают то же самое. – simonzack

+1

Что делает 'console.log (checkedTopics.length),' дает вам? –

ответ

2

Ваш код javascript должен работать. Я думаю, что проблема не имеет ничего общего с методом $.each, но с чем-то другим.

Here is a simplified example вашего кода Я воссоздал в jsFiddle.

Либо проблема в вашем шаблоне, либо где-то еще. Кроме того, примите во внимание рекомендации, приведенные в других ответах с точки зрения передового опыта, прежде всего используйте соответствующие селекторы вместо getElementsByName и затем оберните их в объект jQuery.

1

Используйте это:

function AddTheProduct() { 
    var txtTopicsGuids = ""; 
    $("input[name=chkRelatedTopics]").each(function() { 
     if ($(this).is(":checked")) { 
      //action 
     } 

    }); 
} 
+0

нет никакого сравнения между javascript и jquery. Итак, «_You используете javascript и jQuery mixeup_» не имеет смысла. Я думаю так. –

+0

@Mr_Green OP использует объект, созданный javscript, а затем в jQuery. –

1

Try:

$('input[name="chkRelatedTopics"]').each(function(){ 
if($(this).is(":checked")){ 
//do something here 
} 
}); 
Смежные вопросы