2017-02-22 70 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

    我使用後者 - 謝謝它運作良好! –