gpt4 book ai didi

jquery - jQuery 代码中的过滤器不是函数错误

转载 作者:行者123 更新时间:2023-12-01 06:43:26 24 4
gpt4 key购买 nike

我有这个 jQuery 代码,但是每当我调用 filterdata上的方法我的 Ajax 回调中的变量出现错误说明

data.filter is not a function

我也尝试过替换 filterfind ,结果相似。如果我只使用.html(data)data 中的标记变量已成功添加到我的页面。但是,由于我只需要一部分标记,因此我需要能够按 .allMessages 进行过滤。在将该标记添加到页面之前的类选择器。

$('body').on('click','.page-link',function (e) {
e.preventDefault();

var url = $(this).attr("href");
glob = url;
$.get(url,{type:'jquery'},function (data) {
filter = data.filter('.allMessages');
$("#contentMessage").html(filter).show('fast');
targetUrl =glob;
window.history.pushState({url: "" + targetUrl + ""},glob , targetUrl);
});
});

在这里,data是格式为的 HTML 字符串

<html>
...
</html>

我已使用 console.log(data) 验证了该 HTML 的结构和$("contentMessage").text(data).show('fast') ,并能够验证是否包含完整的 HTML 文本,包括 <div>具有所需 allMessages 的元素类。

登录后$(data).filter('.allMessages')在控制台中,我得到了一个长度为 0 的 jQuery 对象(没有匹配的元素)。

为什么我会收到此错误?如何解决此问题?

最佳答案

$.get 的(第一个)参数的回调函数不是 jQuery 对象,因此您无法对该变量调用 jQuery 方法。在本例中,它是一个 DOM 字符串。最简单的解决方案是将其包装在对 jQuery 对象的调用中以获取 jQuery 对象实例:

$(data).filter('.allMessages');

不过,根据该数据的具体格式,您可能希望在将其包装到 jQuery 对象中之前单独对其进行解析。

<小时/>

但是,根据您返回的数据文本,您应该使用 find在这种情况下:

$(data).find('.allMessages');

filter查看 jQuery 对象中的元素,并删除与提供的选择器不匹配的元素。它不会遍历 DOM 来查看子元素——它只是与 jQuery 对象中的顶级元素进行匹配。

find 遍历匹配集中的元素,并返回一个 jQuery 对象,其中包含与选择器匹配的后代——在本例中,这就是您想要的。

关于jquery - jQuery 代码中的过滤器不是函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com