Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将转换应用于jQuery匹配的每个元素并满足某些条件_Jquery - Fatal编程技术网

如何将转换应用于jQuery匹配的每个元素并满足某些条件

如何将转换应用于jQuery匹配的每个元素并满足某些条件,jquery,Jquery,我有一个复选框列表。我想从每个复选框中获取下一个元素的文本,并将它们收集到一个新列表中 我只是想知道这样的事情是否可能: var checked_all = $('.brand-chk').each().is(':checked') ? $(this).next().text() : continue; 实际上,我想这样做: var checked_all = []; $('.brand-chk').each(function(e) { if($(this).is(':checked')

我有一个复选框列表。我想从每个复选框中获取下一个元素的文本,并将它们收集到一个新列表中

我只是想知道这样的事情是否可能:

var checked_all = $('.brand-chk').each().is(':checked') ? $(this).next().text() : continue;
实际上,我想这样做:

var checked_all = [];
$('.brand-chk').each(function(e) {
   if($(this).is(':checked')) {
      checked_all.push($(this).next().text());
   }
});

实际上,语法不正确,
continue
在那里是不可接受的。。。这能做到吗

您可以将一些jQuery函数链接在一起,得到如下结果:

var checked_all = $('.brand-chk') // match all checkboxen
  .filter(':checked') // now let's only look at checked ones
  .map(function() { 
    return $(this).next().text(); // take next().text() from each element
  });
但是,由于与大多数jQuery操纵器一样,
.next()
,可以处理匹配列表中的每个元素并返回结果元素的列表,因此您只需执行以下操作:

var checked_all = $('brand-chk')
  .filter(':checked') 
  .next() // get list of next() applied to each element in the original list
  .map(function() { return $(this).text(); });
我们可以在原始选择器内移动
过滤器
,以获得一些性能增益,特别是如果有很多未选中的框:

var checked_all = $('brand-chk:checked') 
  .next() 
  .map(function() { return $(this).text(); });
最后,我们可以使用一些JS技巧来避免声明匿名函数:

var checked_all = $('brand-chk:checked').next().map($.fn.text);

但是我不确定这是否比以前的版本更可读。

为什么你要试图超级混淆你的代码?你的意思是
$('.brand chk:checked')。each()
?@LightnessRacesinOrbit,我真的不知道,我感觉到有些东西可以减少代码,因为我倾向于选择短代码,尤其是客户端。。blgt给了我一个最好的选择,我不敢相信我竟然没有想到。干杯我必须承认,你知道你的jquery!太棒了,谢谢你