문제

I have a function that scans a table for a variable (keyID) and selects the table cell that contains that variable. The variable is currently defined as:

selectedTD = table.find('td:contains("' + keyID + '")');

However if keyID = 10, then selectTD will return a value if a table cell contains 10, 100, 1010 etc.

How can I make the variable selectTD only select the table cell when keyID is an exact match, rather than contains?

도움이 되었습니까?

해결책

Use filter() to pass each item in the collection through a function that returns true if the item should be included:

selectedTD = table
                .find('td')
                .filter(
                    function() { 
                        return this.innerText === keyID 
                    });

ETA: If you can control the HTML generated I suggest you add the keyID as a data- attribute such as <td data-keyid="keyhere">. Then you can simply use $('td[data-keyid=' + keyID + ']')

다른 팁

There's no single, native jQuery selector that will let you do that, but good answers here. Alternatively, this jQuery extension looks promising.

Try using .filter() like:

selectedTD = table.find('td').filter(function(){
    return $.trim(this.innerHTML) == keyID;
});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top