0

我想要类似的过滤值,我尝试了下面的js代码,但是这段代码不能过滤值111,因为这个没有,。我的 html 代码如下(有些可以,有些不可以:),

如何修复用于过滤所有字符串的 js 代码?

演示:http: //jsfiddle.net/bNuRE/

HTML:

<div class="oo">111</div>
<div class="oo">111, 222, 333</div>
<div class="oo">444, 111</div>
<div class="oo">222, 333</div>
///////////////////////////////////////////////////////
<div class="ww">111</div>
<div class="ww">777</div>
<div class="ww">333</div>
<div class="ww">666</div>

JS:

var valeache = $('.oo').text().split(', ');
$.each(valeache, function (a, val) {
    $('.ww').filter(function () {
        return $(this).text() == val
    }).remove();
});
4

3 回答 3

1

你的构造valeache是错误的。

您需要遍历每个.oo元素才能正确构造valeache.

var valeache = $('.oo').map(function(){
    return $(this).text().split(', ');
}).get();
$.each(valeache, function (a, val) {
    $('.ww').filter(function () {
        return $(this).text().trim() == val;
    }).remove();
});
于 2013-02-18T18:40:21.543 回答
0

我不完全清楚你想要做什么。您是否只是试图从目标列表中删除其值与源列表的任何元素中的一个(可能是逗号分隔的)值匹配的元素?如果是这样,我认为您可以更轻松地做到这一点:

var vals = $.map($('.oo'), $.text).join(", ").split(", ");

$('.ww').filter(function () {
    return $.inArray($(this).text(), vals) > -1;
}).remove();

演示:http: //jsfiddle.net/CrossEye/MVGLQ/1/

该初始数组包含重复项,但这应该不是问题。

于 2013-02-18T19:05:16.510 回答
0
var valeache = null;

$('.oo').text(function(i, text) {
    valeache += text.replace(/\s/g,'') + ',';
})
valeache = $.unique( valeache .replace(/,$/,'').split(',') );

$.each(valeache, function (a, val) {
    $('.ww').filter(function () {
        return $(this).text() == val
    }).remove();
});

演示:http: //jsfiddle.net/xfSK4/3/

于 2013-02-18T18:44:52.660 回答