2017-02-22 71 views
1

我目前有以下jQuery过滤器,其中holiday_days是可变日期编号(例如1,2,3,4 ... 28,29,30)。该文本必须完全匹配,因此,例如,如果holiday_days = 1,它不返回1,10,11,12 ...忽略html元素和仅搜索文本的jQuery过滤器函数

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. 忽略的跨度,只是搜索的文本(准确 - 包含不会在这里工作)

OR

  • 基于td类的过滤器,不会改变
  • +0

    请您发表的jsfiddle或等效的,所以我们可以玩弄你的代码。 –

    回答

    3

    有两种方法可以修复 这个。最简单的方法是在包装的价值自己的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,因为它是和读取从第一textNode值td本身:

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

    我使用后者 - 谢谢它运作良好! –