Javascript 如何使用JQuery迭代枚举的检查列表(复选框)?

Javascript 如何使用JQuery迭代枚举的检查列表(复选框)?,javascript,jquery,checkbox,jquery-events,Javascript,Jquery,Checkbox,Jquery Events,如何使用JQuery迭代枚举的检查列表(复选框) 您好,我有以下复选列表(包含两个复选框,其中有两个不同的电子邮件地址): 然而,我现在有一个列举的清单。。。只需要附加/连接索引号(我将其存储在一个隐藏字段中,并且始终可以获得 正确),但似乎看不到如何传入第二个迭代器的输入:checkbox:checked 以下是选中列表的HTML源代码: <div id="mycomponent.comment0.replyToRecipientsCheckList"

如何使用JQuery迭代枚举的检查列表(复选框)

您好,我有以下复选列表(包含两个复选框,其中有两个不同的电子邮件地址):

然而,我现在有一个列举的清单。。。只需要附加/连接索引号(我将其存储在一个隐藏字段中,并且始终可以获得 正确),但似乎看不到如何传入第二个迭代器的
输入:checkbox:checked

以下是选中列表的HTML源代码:

 <div id="mycomponent.comment0.replyToRecipientsCheckList" 
      class="checkList" 
      onclick="selectIndividualRecipients()">
      <ul id="mycomponentcomment0.replyToRecipientsCheckList_ul">
          <li>
            <label for="mycomponent.comment0.replyToRecipientsCheckList_0" 
                 class="checkListLabel">
               <input type="checkbox"  
                      value="johndoe1@example.com" 
                      id="mycomponent.comment0.replyToRecipientsCheckList_0" 
                      name="mycomponent.comment0.replyToRecipientsCheckList"/>
                      johndoe1@example.com
            </label>
    </li>
    <li>
        <label for="mycomponent.comment0.replyToRecipientsCheckList_1" 
               class="checkListLabel">
               <input type="checkbox"  
                      value="johndoe2@example.com" 
                      id="mycomponent.comment0.replyToRecipientsCheckList_1" 
                      name="mycomponent.comment0.replyToRecipientsCheckList"/> 
                      johndoe2@example.com
        </label>
    </li>
 </ul>
</div>
浏览器显示(
$test)。each()
抛出一个未捕获的异常,这是不允许的


我可能做错了什么?

您是否尝试过如下更改您的var测试声明

var test = '#' + event.attr('id') + ' input:checkbox:checked';

注意输入前的空格和复选框,而不是复选框。

可能有一种更简单的方法:

$('div.checkList').delegate('input', 'change', function() {
   textField.value = $('div.checkList ul li input:checked').map(function() {
      return $(this).val();
   }).get().join('; ');
});

可能无法解决问题,但我认为您需要关闭
每个(函数{
警报('emails='+emails)行之后)
我想我确实试过了…请继续关注。谢谢rkw,但我需要它来迭代mycomponentcomment0.ReplyRecipientScheckList_ul而不是emailCheckListId。第一个HTML和JavaScript用于非枚举ul列表。这种情况是枚举ul列表,即mycomponentcomment0.ReplyRecipientScheckList_ul。我需要访问它s行项目。
// Uses an event listener which picks individual contacts
// and populates input field.
function selectIndividualRecipients() {

    var checkListPrefix = 'mycomponent.comment';    
    var index = document.getElementById("commentHiddenField").value;
    var checkListPostfix = '.replyToRecipientsCheckList_ul';
    var event =  checkListPrefix + index + checkListPostfix;
    
    $(event).change(function() {

         // Declare array
         var emails = [];

         // Iterate through each array and put email addresses into array
    
         // THIS DOESN'T SEEM TO BE WORKING:
         var test = '#' + event.attr('id') + 'input:check:checked';
         $(test).each(function() {
         alert('inside iterator');
         alert('this.val: ' + $(this).val());
         emails.push($(this).val());
         alert('emails = ' + emails);
    });

    // Assign variable to Reply To: text field by obtaining element's id.
    var textField = document.getElementById(indexedReplyTextField);

    // Add / Remove array from text field
    textField.value = emails;
}
var test = '#' + event.attr('id') + ' input:checkbox:checked';
$('div.checkList').delegate('input', 'change', function() {
   textField.value = $('div.checkList ul li input:checked').map(function() {
      return $(this).val();
   }).get().join('; ');
});