как читать только строки и игнорировать другой элемент в JQuery - PullRequest
0 голосов
/ 18 марта 2011

У меня есть следующий элемент 'td'element, и я хочу прочитать строковую часть (ячейка 1) ТОЛЬКО без части' span ', как я могу это сделать в jQuery?

<td class="myTable">cell 1<span class='end'>&emsp;</span></td>

Спасибо.

Ответы [ 3 ]

2 голосов
/ 18 марта 2011

Вот общее решение, которое сделает это без уродливости RegExp: -)

var text = $('.myTable').clone()
              .children()
                  .detach()
              .end()
              .text();

Edit 1:
В качестве альтернативы, если вы уверены, что <span> всегда будет содержать только какой-то символ пробела - вы можете использовать .text(), за которым следует .trim(), например:

$.trim( $('.myTable').text() );

Редактировать 2:
ПростоЧтобы поиграть еще, вот еще один пример универсального решения, которое не требует большого количества jQuery и, следовательно, гораздо более эффективно.Я представляю удивительный плагин .readStringOnly():

$.fn.readStringOnly = function () {
    var nodes = this[0].childNodes,
        text = '';
    for (var i=0, item; (item = nodes[i]); i++) {
      if ( item.nodeType == 3 ) { // text node! 
        text += item.nodeValue;
      }
    }
    return text;
  };

// Usage:
//   var text = $('.myTable').readStringOnly();

Это, по сути, то, что делает первое решение в чисто jQuery-методах, но поскольку jQuery не обеспечивает поддержку обработки текстовых узлов, у одного остаются два довольно плохих варианта.: неэффективный код jQuery или что-то вроде громоздкой бесполезности W3C-DOM.(так же хорошо, как я сделал плагин из него.)

...

Опять же, вы всегда можете просто использовать регулярное выражение, как уже было предложено кем-то.: -)

1 голос
/ 18 марта 2011
$(".myTable").html().replace(/<span.*<\/span>/gi, "")

Пример здесь: http://fiddle.jshell.net/TSYQJ/

0 голосов
/ 18 марта 2011
var tableContents = $(".myTable").text();

Только что протестировано, и это работает. Пример страницы:

<html>
<head>
<script type="text/javascript" language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    alert($(".myTable").text()); 
});
</script>
</head>
<body>

<table>
<tr>
<td class="myTable">cell 1<span class='end'>&emsp;</span></td>
</tr>
</table>
</body>
</html>
...