jQuery 过滤器变体 3:来自 DOM 元素数组(不是选择器)



jQuery .filter()文档说,使用它的第三种方法是来自elements,它不是选择器而是DOM元素 - 我将其作为元素数组进行了测试。但以下方法不起作用。我可以从自定义元素数组中过滤吗?http://api.jquery.com/filter/

var subset = [];
$('input[type=text]').each(function(i, item) {
   subset.push($(this));
});
// Filter by Elements array
 $('input').filter(subset).each(function(i, item) {
    console.log('Filtered from array: ' + $(this).attr('id'));
 });
 console.log('end');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="text1"/><br/>
<input type="textarea" id="textarea1"/><br/>
<input type="radio" id="radio1" name="radiogroup"/>Radio1<br/>
<input type="radio" id="radio2" name="radiogroup"/>Radio2<br/>
<input type="radio" id="radio3" name="radiogroup"/>Radio3<br/>
<input type="text" id="text2"/><br/>

这是解决方案

$('input[type=text]').each(function(i, item) {
   subset.push(item);
});

您必须使用 subset.push(item); 更改subset.push($(this))

var subset = [];
$('input[type=text]').each(function(i, item) {
   subset.push(item);
});
// Filter by Elements array
 $('input').filter(subset).each(function(i, item) {
    console.log('Filtered from array: ' + $(this).attr('id'));
 });
 console.log('end');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="text1"/><br/>
<input type="textarea" id="textarea1"/><br/>
<input type="radio" id="radio1" name="radiogroup"/>Radio1<br/>
<input type="radio" id="radio2" name="radiogroup"/>Radio2<br/>
<input type="radio" id="radio3" name="radiogroup"/>Radio3<br/>
<input type="text" id="text2"/><br/>

最新更新