JQuery. Текст проверки не удалось - PullRequest
0 голосов
/ 05 февраля 2011

Я обнаружил, что эта проблема всегда возникает и не согласована.

Эта проблема приводит к тому, что сравнение jquery .text не работает, поскольку jQuery пытается сравнить фактическую формулировку, но не удается.

Например: 'SecondНазвание 'отображается в виде 1 строки в браузере, но при просмотре html-источника' Second 'и' Title 'находятся в разных строках.

Таким образом, if($(this).text()=="Second Title") не работает.

Какой-нибудь хороший способ устранить пробелы в источнике HTML в таком случае?так что я могу продолжать использовать сравнение .text.

Пример, показывающий не работающую версию.

        <table border="0" cellpadding="0" cellspacing="1">

          <tr>
            <td width="400" colspan="3" align="center"><span>First Title</span></td>
          </tr>

          <tr align="center">
            <td>1</td>
            <td>2</td>
            <td>3</td>
          </tr>

        <tr>
            <td width="400" colspan="3" align="center"><span>Second
              Title</span></td>
          </tr>

          <tr align="center">
            <td>4</td>
            <td>5</td>
            <td>6</td>
          </tr>

    </table>




$(document).ready(function() {

    replaceText();

});


function replaceText()
{

    var first, second
    first= "", second="";

    $("*").each(function() {
        if($(this).children().length==0)
        {
            if($(this).text()=="First Title")
            {                
                first+= jQuery.trim($(this).closest('tr').next('tr').find("td").eq(0).text());
            }

            if($(this).text()=="Second Title")
            {                
                second+= jQuery.trim($(this).closest('tr').next('tr').find("td").eq(0).text());                   
            }                                     
        }
    });    


alert(first);
alert(second); //fail

}

1 Ответ

1 голос
/ 05 февраля 2011

Если вы не полагаетесь на повторы пробелов (скажем, 3 пробела), вы можете заменить все смежные пробелы пробелами.

function shrinkWhitespace(t) {
    return t.replace(/\s+/g, ' '); 
}

Пример

>> shrinkWhitespace('Second \n\tTitle') == 'Second Title'
true
...