我知道我们可以使用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
}
}
});
答案 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
来检查。