知道HTML标签是否有文本节点

时间:2015-09-08 08:49:32

标签: javascript jquery jquery-selectors

给出了2个替代

<div class="no-text example">
  100
</div>

<div class="with-text example">
 <span class="surprise"> 50 </span>
 100
</div>

我希望在两种情况下都使用.example内的数字,使用相同的选择器或以某种方式知道.no-text.with-text

之间的区别

执行$(".example").text()会给我50 100

目前我正在试验.clone().children().remove().end().text(),但我需要知道它是.no-text.with-text

7 个答案:

答案 0 :(得分:1)

我不知道你想要什么样的数据,但是如果你想要一个包含所有文本节点文本的数组,那么你可以这样做。

创建一个空数组,然后遍历所有.example个元素并检查每个元素是否&#34;这个&#34;里面有一个跨度。

如果您认为&#34;惊喜&#34; element可以是任何内容,例如在|| $(this).children("p").length检查

的右侧添加if()
var textArray = []

$(".example").each(function(){
    if($(this).children("span").length) {
        textArray.push($(this).text())
    }
})

答案 1 :(得分:1)

如果您只想直接在.example下获取号码,请尝试以下操作:

$(".example").contents()
    .filter(function () {
        return this.nodeType === 3;  //text node
    }).each(function () {
        console.log(+this.nodeValue.trim());
    });

//100
//100

http://jsfiddle.net/DerekL/hjamxbc3/

答案 2 :(得分:0)

您可以创建一个对象并将值存储在数组对象中:

&#13;
&#13;
var o = {};

$(".example").each(function() {
  o[$(this).attr("class")] = $(this).map(function() {
    return $.trim(this.textContent).split(' ');
  }).get();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="no-text example">
  100
</div>

<div class="with-text example">
  <span class="surprise"> 50 </span>
  100
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

我不知道你想要达到什么目标,但我创造了一个可以提供帮助的小伙伴:http://jsfiddle.net/mxr6eddm/

$(".example").each(function () {

    $("#output").append($(this).text());

    if ($(this).hasClass('with-text')) $("#output").append(" - with text");
    else $("#output").append(" - no text");

    $("#output").append("<br>");

});

答案 4 :(得分:0)

试试这个:

$(document).ready( function () {

  var getListAttributes = function (selector) {
    listValue = selector.attr('data-value');
    alert(listValue);
  }

  $(document).on('click','.js-select a', function() {
      getListAttributes($(this));
   });
});

答案 5 :(得分:0)

您可以执行以下操作

onLoad

答案 6 :(得分:0)

.filter().contents()结合使用:

&#13;
&#13;
var which = [];

$('body > .example').contents().filter(function() {
    if(this.nodeType === 3 && this.parentNode.classList.length > 1 ){
          which.push(this.parentNode.classList[0]);
    }
});

$('#elements').html(JSON.stringify(which));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="no-text example">100</div>

<div class="with-text example"><span class="surprise"> 50 </span>100</div>

<div id='elements'></div>
&#13;
&#13;
&#13;