jQuery найти и отфильтровать - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть этот фрагмент HTML:

<body id='mydoc'>

<table id='mytab'>
 <tr>
    <td>
        <table>
            <tr>
                <td>My String is simple</td>
            <tr>
        </table>
    </td>
  </tr>
</table>

</body>

<script type="text/javascript" src="./jquery-1.7.1.js"></script>
<script type="text/javascript" src="./jquery.parsequery.js"></script>
<script>

var obj = $('#mydoc').find('td').filter(function(){
   return ($.text(this).indexOf('My String') != -1)       
   });

alert(obj.length);
for (i=0; i<obj.length; i++)
{
        alert($(obj[i]).html());
}
</script>

, и предупреждение javascript возвращает 2 объекта.Я не знаю, почему это происходит.Как я могу получить ячейку, содержащую только «Моя строка проста»?Спасибо.

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Ваш <td>My String is simple</td> обернут внутри <td><table><tr><td>My String is simple</td><tr></table></td>, поэтому оба возвращаются.

Вы можете найти точное совпадение текста:

filter(function(){ return ($(this).text() == 'My String') })

или найдите ячейку, которая не содержит ячейку:

filter(function(){ return ($(this).text().indexOf('My String') != -1 && $(this).html().indexOf('<td>') == -1) })

Есть несколько других опций, но все зависит от того, как вы хотите отфильтровать выделение вниз.

1 голос
/ 08 февраля 2012

Это происходит потому, что он соответствует элементу <td> в таблице вокруг него, а также внутреннему элементу <td>.

Измените строку фильтра на эту:

var obj = $('#mydoc').find('td').filter(function()
{
    return $(this).find('td').length == 0 ? true : false;
}

... чтобы найти самый внутренний <td> - чтобы убедиться, что он также содержит 'My String', попробуйте это:

var obj = $('#mydoc').find('td').filter(function()
{
    return (
      $(this).find('td').length == 0 && ($.text(this).indexOf('My String') != -1)
    ) ? true : false
}
0 голосов
/ 08 февраля 2012
$('table td').children('td').filter(function(){
   return ($.text(this).indexOf('My String') != -1)       
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...