过滤功能在IE 11 Edge中不起作用,但在Chrome中运行正常 和Mozilla。我正在编写以下代码
var data = $(".chartsValue text");
var filteredData=data.filter(function()
{ return $(this).css('font-weight') == 'bold';
}).text();
我正在获取html中的值,如下所示
<g class="chartsValue" style="cursor:pointer;text-align:center;" transform="translate(101,10)">
<rect x="0" y="0" width="19" height="16" strokeWidth="0" fill="none" rx="0" ry="0">
</rect>
<text x="0.828125" zIndex="1" style="font-size:11;font-weight:bold;color:black;fill:black;" y="14">
6m
</text>
所以,我需要在IE Edge中通过样式获取6m值
答案 0 :(得分:2)
感谢大家快速回复我通过使用属性属性
解决了这个问题var filteredData =data.filter(function()
{
return $(this).attr('style').indexOf('bold') > -1;
}).text();
答案 1 :(得分:1)
实际上,我们可以提取filter
函数并使用纯JavaScript迭代NodeList
类型:
const els = document.querySelectorAll('g.chartsValue text');
const filter = fn => x => Array.prototype.filter.call(x, fn);
const r = filter(e => e.style['font-weight'] === 'bold')(els).map(x => x.innerText)
console.log(r)
<g class="chartsValue" style="cursor:pointer;text-align:center;" transform="translate(101,10)">
<rect x="0" y="0" width="19" height="16" strokeWidth="0" fill="none" rx="0" ry="0">
</rect>
<text x="0.828125" zIndex="1" style="font-size:11;font-weight:bold;color:black;fill:black;" y="14">
6m
</text>
</g>
在Edge,Firefox和Chrome中测试过。
答案 2 :(得分:1)
jQuery&#39; s .filter(function)
根据您的功能返回元素的子集。如果要访问结果子集中的第一个元素,则应使用.first()
例如:
var data = $(".chartsValue text");
var filteredData = data.filter(function () {
return $(this).css("font-weight") === "bold";
}).first().text();
如果结果子集中有多个元素,您可以使用.map(function)
例如:
var data = $(".chartsValue text");
var filteredData = data.filter(function () {
return $(this).css("font-weight") === "bold";
}).map(function () {
return $(this).text();
});
您可能还想修改使用String.trim()
获取的文字,例如: .text().trim();