匹配父元素中的文本

时间:2014-10-10 20:01:11

标签: javascript jquery html

我试图检查2个div是否包含相同的文本,如果是,则将样式添加到父div。 我使用下面的代码可以正常工作,但我的问题是div都在寻找匹配而不仅仅是父级中的div?如果你看下面的

<div class="infobox">
    <div class="date">8</div>
    <div class="secdate">8</div>
</div>
<div class="infobox">
    <div class="date">1</div>
    <div class="secdate">11</div>
</div>
<div class="infobox">
    <div class="date">8</div>
    <div class="secdate">11</div>
</div>

和jQuery

jQuery(function ($) {
    $('.date').each(function () {
        var myhtml = $(this).html().split(' ')[0];
        var ele = $(this);
        $('.secdate').each(function () {
            myhtml == $(this).html().split(' ')[0] ? $(ele).parent().css('background', '#ffff00') : ""
        })
    })
});

Fiddle

第三个div正在应用这个样式,它不应该是不匹配的2个div?

3 个答案:

答案 0 :(得分:4)

这似乎更简单:

$('.infobox').each(function () {
    if ($(this).find('.date').text() == $(this).find('.secdate').text()) $(this).css('background', '#ffff00')
})

<强> jsFiddle example

循环显示父级(信息框)并将日期子级的文本与secdate子级进行比较。

答案 1 :(得分:0)

似乎应该更简单:

jQuery(function ($) {
    $('.date').each(function () {
        var dateText = $(this).text();
        var secdateText = $(this).next('.secdate').text();

        if (dateText == secdateText) {
            $(this).parent().css('background', '#ffff00');
        }
    });
});

Fiddle

答案 2 :(得分:0)

我改变了一点:

 $(document).ready(function(){
     $('.infobox').each(function () {           
        if( $(this).children('.date').html() == $(this).children('.secdate').html() )
            $(this).css('background', '#ffff00');
     });
 });

这样你甚至不需要循环。 我在这里测试过它的魅力就像魅力一样:)

希望有所帮助