如何使用Jquery和类选择器获取元素第一个子文本?

时间:2017-07-08 09:43:38

标签: javascript jquery html css

我在元素中有两个元素。如下面=>

<div class="NDateCount" style="display:inline-block">
     <!--Issue to solve-->
     <small style="display:none;" class="ng-binding">2017-07-08T12:44:10.367+06:00</small>
     <small ng-show="CountPostDate(post.timelineStrore.creationDate) < 2" style="color:#1ab394;" class="ng-binding"><i class="fa fa-clock-o"></i> 3 hours ago</small>
     <!--End of Issue to solve-->
</div>

我有这种div超过10次动态生成。我希望div元素的第一个孩子是small文本;我到目前为止做了==&gt;

    var ReloadTime = function () {
        $('.NDateCount').each(function () {
            var OldValue = $(this).first().text();
            alert(OldValue);
         });
        setTimeout(ReloadTime, 50);
    }

但上面的函数给出了small两个标签内容的内容。 喜欢==&gt;  result

有解决这个问题的方法......

3 个答案:

答案 0 :(得分:2)

这样做

var ReloadTime = function () {
    $('.NDateCount').each(function () {
        var OldValue = $(this).find('small').eq(0).text();
        alert(OldValue);
     });
    setTimeout(ReloadTime, 50);
}

它适用于你。

答案 1 :(得分:0)

first()正在返回div元素,因此您可以在其中获取文本。

获取children的{​​{1}},然后使用$(this)

first()

var OldValue = $(this).children().first().text();
var ReloadTime = function() {
  $('.NDateCount').each(function() {
    var OldValue = $(this).children().first().text();
    alert(OldValue);
  });
  //setTimeout(ReloadTime, 50);
}

ReloadTime();

答案 2 :(得分:0)

&#13;
&#13;
var ReloadTime = function () {
        $('.NDateCount').each(function () {
            var OldValue = $(this).find('small').first().text();
            alert(OldValue);
         });
    }

setTimeout(ReloadTime, 50);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="NDateCount" style="display:inline-block">
     <!--Issue to solve-->
     <small style="display:none;" class="ng-binding">2017-07-08T12:44:10.367+06:00</small>
     <small ng-show="CountPostDate(post.timelineStrore.creationDate) < 2" style="color:#1ab394;" class="ng-binding"><i class="fa fa-clock-o"></i> 3 hours ago</small>
     <!--End of Issue to solve-->
</div>
&#13;
&#13;
&#13;

首先,您所犯的主要错误是setTimeout()函数位于ReloadTime()函数内。因此,setTimeout()不会调用该函数,除非您触发该函数一次。所以我不同意上面的答案。其次,在$(this)函数内使用each引用单个$('.NDateCount')元素以便实现您的需要,首先需要在{{下找到元素<small> 1}}然后获取$(this)元素,最后获取first()