簡體   English   中英

JQuery過濾器函數忽略html元素並僅搜索文本

[英]JQuery filter function to ignore html elements and search only text

我目前有以下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這樣您就可以直接檢索它而不需要兄弟姐妹:

<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; 
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM