我是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);
}
我如何定位我需要的每个细胞?
我还想要替换“/”符号。我还想将“ - ”符号的所有实例更改为空格“”。我怎样才能取代多件事?
答案 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,' '));
});
}