簡體   English   中英

獲取與正則表達式匹配的行ID與data屬性

[英]Get Id of Row that Matches Regex with data attribute

我有一個功能:

  1. 過濾tr行
  2. 根據傳遞給函數的值制作批准的正則表達式
  3. 創建一個rtnData數組,該數組由我認為是具有匹配批准的正則表達式的數據屬性的行組成。

我想要的只是匹配行的ID,而不是rtnData在做什么。

function filterPay(val){
        // target Rows
            $(".loading tr").hide().filter(function() {

        var rtnData = "";
        //make approved regex based on given value
        var payApproved=    new RegExp(val.map(x => x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join('|'), 'i');

           //make rtnData array? consisting of rows that match regex
            rtnData = (
                        $(this).attr("data-payment").match(payApproved)
            );

        return rtnData;

        }).fadeIn("fast");
    }

//I know this refers to the unique Id of each row but don't know how to 
// chain it with the match selection
console.log($(this).attr('data-row'));

因此,除了顯示行外,還可以獲取ID並將其推入新數組,因為在此之后,我必須將該數組與另一個過濾器數組進行匹配,並且僅顯示2個數組具有匹配ID的行。

您的代碼將tr列表過濾為那些data-payment與正則表達式匹配的tr列表。 現在,您只需要對結果進行map並提取ID。

另外,您不應該在filter內創建正則表達式,因為它不受每個tr影響

function filterPay(val) {
  var payApproved = new RegExp(val.map(x => x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join('|'), 'i');

  // target Rows
  var rows = $(".loading tr").hide().filter(function() {
      // only use test if the reguar expression does not have the global flag set
      return payApproved.test($(this).attr("data-payment"));
  }).fadeIn("fast");
  var ids = rows.get().map(function(row){return row.id});
}

暫無
暫無

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

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