javascript - JQuery 过滤函数忽略 html 元素并只搜索文本

标签 javascript jquery html

我目前有以下 JQuery 过滤器,其中 holiday_days 是可变日期数字(例如 1、2、3、4...28、29、30)。文本必须完全匹配,例如,如果 holiday_days = 1,它不会返回 1、10、11、12...

var element = $('td').filter(function() { 
                return Number(this.textContent) == holiday_days; 
            });

我的 html 看起来有点像下面这样:

<table>
    <tr>
        <td class="holiday_days">
            "holiday_days"
        </td>
        ...

在代码中,我后来在文本下方的某些分隔符上附加了一个跨度。

<table>
    <tr>
        <td class="holiday_days">
            "holiday_days"
            <-- appended -->
            <span>There is a link in here</span>
            <-- appended -->
        </td>
        ...

那么我的过滤器什么都不返回。我怎么可能

  1. 忽略跨度并只搜索文本(确切地说 - 包含在这里不起作用)

  1. 基于td类过滤,不改变

最佳答案

有两种方法可以解决这个问题。简单的方法是将值包装在它自己的 span 中,这样您就可以在没有 sibling 的情况下直接检索它:

<td class="holiday_days">
    <span class="holiday-days">[holiday_days]</span>
    <span>There is a link in here</span>
</td>
var element = $('td').filter(function() { 
    return parseInt($(this).find('.holiday-days').text(), 10) == holiday_days; 
});

或者,您可以保持 HTML 不变,并从 td 本身读取第一个 textNode 值:

var element = $('td').filter(function() { 
    var holidayText = $(this).contents()[0].textContent.trim();
    return parseInt(holidayText, 10) == holiday_days; 
});

关于javascript - JQuery 过滤函数忽略 html 元素并只搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42394211/

相关文章:

javascript - Sails.js:特定于 socket.io 的策略

jquery - 在离开字段时关闭 ul 列表(单击或使用键盘上的选项卡)

html - CSS 多字体系列?

javascript - 相同的 IIFE,不同的 js 文件

javascript - 如何在 Angular-Google-Maps 中使用 heatmapLayer?

javascript - npm outdated 命令在当前版本中显示 MISSING

javascript - jquery 的问题

jquery - 如何为使用 jquery 创建的图像设置动画?

jquery - 仅使用 CSS 制作箭头动画

javascript - Chrome 扩展程序呈灰色并且不会显示弹出窗口