检查来自ajax调用的html响应中是否存在类或id

时间:2015-12-08 09:48:55

标签: javascript jquery ajax

我知道我们可以使用hasClass()但在我的情况下我的ajax会返回html。

我可以附加然后检查班级是否存在但是会有一个电影。在将它渲染到某个地方之前,是否可以检查html中的内容?

$.ajax({
  url:'some_url',
  success: function(html) {
    // I can do this:
    $('body').append(html);
    if ($('my_selector').length > 0) {
      // but I don't want to do this because I don't want that the html will show to the user
    }
  }
});

4 个答案:

答案 0 :(得分:2)

是的,可能

var yourReturnedHtml = getHtml();
return $(yourReturnedHtml).find('.someClass').length > 0;

答案 1 :(得分:0)

确保工作方法,在我的项目中花了很多时间,这将帮助您找到任何元素,具有某些类或ID的元素。

您可以将ajax响应附加到某个隐藏的html元素,例如div

e.g。

<div id="responseDiv" style="display: none"></div>

//Now write a function to save ajax response to div
//from this div, you can find out whether class or any element is there

$.ajax({
   url: 'some url',
   success: function(data){

      //save response to div
      $('#responseDiv').html(data);

      //now to check whether some class exists in the div
      if($('#responseDiv .class-to-find').length > 0){
           //since class is found into ajax response, write your code here

      }
   }
});

答案 2 :(得分:0)

我现在明白你的意思了。在ajax的成功函数中使用相同的hasClass()方法并使用async参数。要删除轻弹,请将ajax代码设为seTimeOut,时间为0,如

setTimeout(function(){ //Your ajax code here }, 0);

答案 3 :(得分:0)

进一步@Mohammad Adil回答:

var html = '<div class="test">This is the response from the ajax call.</div>';

function simulateAjax(selector) {
  var exist = $('<div />').html(html).find(selector).length > 0;
  $('#result').append('The element "' + selector + '" ' + (exist ? '' : 'not ') + 'exist<br />');
}

simulateAjax('.test');
simulateAjax('.test1');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>

答案之间的区别,我认为它不适合你的原因,例如:如果你的回答是<div class="test"></div>,@ Mohammad的脚本将返回false,因为那里不是响应中主要元素中<{1}} 中的元素。

所以,你应该用元素包装响应,然后你可以用.test来检查。