使用jquery定位多个td单元并更改它们

时间:2014-01-14 22:07:15

标签: javascript jquery

我是JavaScript和jQuery的新手。我正在尝试定位表格单元格。我有这个代码为我工作,但它只针对第一个单元格。

function hidestuff() {
    var thediv = $('#Chart4_div').find('.bdtablecell').eq(1);
    var text = thediv.text();
    text = text.replace(/\//g, '');
    thediv.text(text);
}

我尝试了这个,但它没有针对所有这些并改变它:

function hidestuff() {
    var thediv = $('#Chart4_div').find('.bdtablecell').eq(1).eq(4).eq(7).eq(10);
    var text = thediv.text();
    text = text.replace(/\//g, '');
    thediv.text(text);
}

我如何定位我需要的每个细胞?

我还想要替换“/”符号。我还想将“ - ”符号的所有实例更改为空格“”。我怎样才能取代多件事?

3 个答案:

答案 0 :(得分:2)

假设你需要第一个,第四个,第七个和第十个,试试这个:

var thediv = $('#Chart4_div').find('.bdtablecell:eq(1), .bdtablecell:eq(4), .bdtablecell:eq(7), .bdtablecell:eq(10)')

这是使用选择器:eq就像函数一样工作。通过在查找选择器中将逗号(,)放在它们之间,我们要求任何逗号分隔列表。

为了更清洁一点,您可以尝试:

var thediv = $('#Chart4_div').find('.bdtablecell').find(':eq(1), :eq(4), :eq(7), :eq(10)')

答案 1 :(得分:2)

.eq()方法只返回一个元素并且链接它没有意义。一种选择是使用数组和.filter()方法。

var ind = [1, 4, 7, 10];

$('#Chart4_div').find('.bdtablecell').filter(function(i) {
    return $.inArray(i, ind) > -1;
}).text(function(_, currentText) {
    return currentText.replace('foo', 'bar');
});

答案 2 :(得分:0)

如果你能修改html。试试这个:

function hidestuff() {

    var thedivs = $('#Chart4_div').find('.itemsINeedToFind'); // new class, here!

    // iterate over each one cell
    thedivs.each(function() { 
        var $this = $(this);
        // replace every \ and - to a white space
        $this.text($this.text().replace(/[\s\-]+/g,' '));
    });
}