【问题标题】:Jquery load using selectors使用选择器加载 Jquery
【发布时间】:2012-06-12 06:47:02
【问题描述】:

我想知道如何或是否可以通过 jQuery 在 ajax 请求中使用选择器

我想要达到的,是这样的

$(".classname").load("something.html $(".classname:contains('some text')").parent()");

换句话说,我想将一个复杂的选择器传递给请求的页面,而不仅仅是一个类或一个 id。

有人可以帮忙吗,还是这不可能?我似乎找不到任何其他已询问此问题的线程!

【问题讨论】:

  • 你能更深入地解释一下用例是什么吗?
  • 我真的不明白您为什么需要将选择器传递给请求的页面...请求的页面将如何处理选择器字符串?
  • 你试过了吗?根据文档:“如果字符串中包含一个或多个空格字符,则假定字符串中第一个空格后面的部分是确定要加载的内容的 jQuery 选择器。” @Khôi 见api.jquery.com/load/#loading-page-fragments
  • 看起来应该可以了,你试过了吗?
  • @gdoron 问题在于它不是选择器,而是(或应该是)jquery 对象。

标签: jquery ajax load css-selectors


【解决方案1】:

如果选择器很复杂,您可以使用.get

$.get("something.html", function(data){
  $(".classname").html($(".classname:contains('some text')", data).parent().html());
}, "html");

【讨论】:

  • 这非常有效——正是我想要的。非常感谢:) - 我还是个新手,你能解释一下 data 参数的作用吗?
  • 数据为something.html的内容,responseText。
【解决方案2】:

.load 假定 URL 后面的空格后面的文本是选择器。它必须是textual selector。您不小心在字符串中包含了等效的 javascript。试试这个:

$('.classname').load('something.html .classname:contains("some text"):parent');

【讨论】:

  • :parent 不会选择父元素,只会将集合缩减为父元素。
  • 好的,除了 :parent 部分之外,这几乎可以按预期工作 - 我只得到包含我要查找的文本的类名,而不是父级!??
  • @afcdesign 你可以使用 :has(见我的回答)
  • 我不太明白?我只想获取选择器的父级。 :has 是如何实现的?
【解决方案3】:
$('.classname').load('something.html *:has(.classname:contains("some text"))')

【讨论】:

猜你喜欢
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2017-09-16
  • 2011-02-13
相关资源
最近更新 更多