试图找到div
元素与id="result"
从返回的数据.ajax()
使用.find()
.不幸的是,alert(result)
不归div#result
.
这是我的代码:
$.ajax({
url: url,
cache: false,
success: function(response) {
result = $(response).find("#result");
alert(response); // works as expected (returns all html)
alert(result); // returns [object Object]
}
});
Run Code Online (Sandbox Code Playgroud)
Ste*_*ins 104
要具体回答您的问题,它似乎正常工作.你说它返回了[object Object]
,这是jQuery将使用该find("#result")
方法返回的内容.它返回一个与find
查询匹配的jQuery元素.
尝试获取该对象的属性,比如result.attr("id")
- 它应该返回result
.
一般来说,这个答案取决于是否#result
是顶级元素.
如果#result
是顶级元素,
<!-- #result as top level element -->
<div id="result">
<span>Text</span>
</div>
<div id="other-top-level-element"></div>
Run Code Online (Sandbox Code Playgroud)
find()
不管用.相反,使用filter()
:
var $result = $(response).filter('#result');
Run Code Online (Sandbox Code Playgroud)
如果#result
不是顶级元素,
<!-- #result not as top level element -->
<div>
<div id="result">
<span>Text</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
find()
将工作:
var $result = $(response).find('#result');
Run Code Online (Sandbox Code Playgroud)
Liv*_*rce 28
我花了3个小时来解决类似的问题.这对我有用.
我试图从我的$.get
响应中检索的元素是body标签的第一个子元素.出于某种原因,当我在这个元素周围包裹一个div时,它变得可以通过$(response).find('#nameofelement')
.
不知道为什么,但是,可回收的元素不能成为身体的第一个孩子...这可能对某人有帮助:)
ant*_*paw 20
试试这个:
result = $("#result", response);
Run Code Online (Sandbox Code Playgroud)
btw alert
是一种调试方式的粗略方法,试试吧console.log
这是你的答案:
<div class="test">Hello</div>
<div class="one">World</div>
Run Code Online (Sandbox Code Playgroud)
以下jQuery不起作用:
$(data).find('div.test');
Run Code Online (Sandbox Code Playgroud)
因为div是顶级元素而数据不是元素而是字符串,要使其工作,您需要使用.filter
$(data).filter('div.test');
Run Code Online (Sandbox Code Playgroud)
另一个相同的问题: 在$ .AJAX加载的HTML上使用Jquery选择器?
小智 6
别忘了用解析html来做.喜欢:
$.ajax({
url: url,
cache: false,
success: function(response) {
var parsed = $.parseHTML(response);
result = $(parsed).find("#result");
}
});
Run Code Online (Sandbox Code Playgroud)
必须工作:)
归档时间: |
|
查看次数: |
158816 次 |
最近记录: |