使用ajax添加后,检查div是否具有特定文本

时间:2015-03-26 10:41:14

标签: javascript jquery ajax

我想检查特定div是否具有已添加ajax的特定文本。

这是ajax功能代码:

    $(function() {
        $(document).on('click', '#JS_couponSubmit', function(e) {
            e.preventDefault();
            var $this = $(this);
            $this.data('text', $this.text());
            $this.text('Cargando...');
            var $form = $('#JS_couponForm');

            $.ajax({
                url: $form.attr('data-action'),
                data: {
                    'coupon_code': $('#JS_couponCode').val(),
                    'view_cart': 'front_cart/v_cart'
                },
                type: 'post',
                dataType: 'json',
                cache: false,
                success: function(response) {
                    $this.text($this.data('text'));
                    $('#JS_cart').replaceWith(response.htmlCart);
                    $('#JS_couponResponse')
                    .html(response.message)
                    .addClass(response.message?'success':'error');
                    $('#JS_couponForm th p').addClass('active');
                    $('#JS_couponForm td').show(100);
                }
            });
        });
    });

此代码会将文字No existe este código(或其他文字,如果优惠券代码正确,但出于此问题的目的,我只是使用此文字)添加到#JS_couponResponse

所以我尝试在success: function(response) { }中使用此功能,但它根本不起作用:

setTimeout(function(){ 
  $('#JS_couponResponse:contains("No existe este código")').each(function () {
      alert("Has text");
  });
},1000);

我也在success: function(response) { }

内再次尝试了这一点
var $myDiv = $('#JS_couponResponse:contains("No existe este código")');
if ( $myDiv.length){
  alert("Has text");
}

知道怎么做吗?

3 个答案:

答案 0 :(得分:0)

您可以在成功方法中添加使用indexOf



$(document).ready(function(){

  $('.JS_couponResponse').each(function(){
    if($(this).text().indexOf("No existe este códig")>-1) {
      $(this).css("color","green");
    }
    else {
          $(this).css("color","red");
    }
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="JS_couponResponse"> No existe este códig  efff fdg sdgs</div>

<div class="JS_couponResponse">efff fdg sdgs</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

:contains的问题在于它无法处理重音字符,例如ó

如果您避免使用当前的任何方法,那么:

e.g。

var $myDiv = $('#JS_couponResponse:contains("No existe este")');
if ( $myDiv.length){
  alert("Has text");
}

答案 2 :(得分:0)

我会选择:

        $.ajax({
            url: $form.attr('data-action'),
            data: {
                'coupon_code': $('#JS_couponCode').val(),
                'view_cart': 'front_cart/v_cart'
            },
            type: 'post',
            dataType: 'json',
            cache: false,
            success: function(response) {
                $this.text($this.data('text'));
                $('#JS_cart').replaceWith(response.htmlCart);
                $('#JS_couponResponse')
                .html(response.message)
                .addClass(response.message?'success':'error');
                $('#JS_couponForm th p').addClass('active');
                $('#JS_couponForm td').show(100);

                // Code to add in your success callback if you have several div ".couponResponse"
                $('.JS_couponResponse').each(function() {
                    if($(this).text() == 'No existe este código'))
                    {
                        alert('Has text');
                    }
                });

                // Code to add in your success callback if you have only one div "#couponResponse"
                if($('#JS_couponResponse').text() == 'No existe este código'))
                {
                    alert('Has text');
                }
        });

请注意,如果您有多个id="JS_couponResponse",则需要从class="JS_couponResponse"切换到div。 DOM中ID 唯一