过滤值类似

时间:2013-02-18 18:30:39

标签: javascript jquery

我希望过滤器值类似,我尝试使用以下js代码,但此代码无法过滤值111,因为这不是,。我的html代码如下(有些人做,有些人不这样做:,)。

如何修复js代码以过滤所有字符串?

DEMO: 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();
});

3 个答案:

答案 0 :(得分: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();
});

答案 1 :(得分: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/

答案 2 :(得分:0)

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

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

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

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

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