Javascript 使用jQuery load()函数获取元素的祖父母

Javascript 使用jQuery load()函数获取元素的祖父母,javascript,jquery,ajax,Javascript,Jquery,Ajax,HTML页面(我无法编辑)包含一个表,我想从中提取第一个td包含类为“targetClass”的子元素的所有行 例如,该表包含: <tr> <td><span class="targetClass">Dog</span></td> <td> <p>Man's best friend.</p> </td> </tr> <tr> <td&g

HTML页面(我无法编辑)包含一个表,我想从中提取第一个td包含类为“targetClass”的子元素的所有行

例如,该表包含:

<tr>
  <td><span class="targetClass">Dog</span></td>
  <td>
    <p>Man's best friend.</p>
  </td>
</tr>
<tr>
  <td>Cat</td>
  <td>
    <p>Mouse's worst enemy.</p>
  </td>
</tr>
<tr>
  <td><span class="targetClass">Mouse</span></td>
  <td>
    <p>Timid cheese-loving creature.</p>
  </td>
</tr>
我试着用这个作为选择器。它不起作用

任何人都知道如何获取元素,而不是使用指定的类获取元素,我可以获取它的祖父母吗?

您可以只使用jQuery本机的伪选择器

var newElement = $('<div>').load(url + ' tr:has(.targetClass)', function() {
    alert(newElement.html());
});
var newElement=$('').load(url+'tr:has(.targetClass)'),函数(){
警报(newElement.html());
});
现在,它只会选择
,如果它的任何子代(不仅仅是直接子代)具有
类。targetClass


请注意,我已经向您提出了上述建议,因为您坚持这样做。您可以在代码中执行相同的操作

以相反的方式执行。与其匹配
.targetClass
然后向上,不如匹配
tr
然后向下

var newElement = $('<div>').load(url + ' tr:has(.targetClass)', function() {
    alert(newElement.html());
});
var newElement=$('').load(url+'tr:has(.targetClass)'),函数(){
警报(newElement.html());
});
load()
只是
$.get()
的快捷方式,它会自动插入内容,如果需要使用复杂的选择器获取元素或将其放入变量,则只需使用
$.get

$.get(url, function(data) {
    var newElement   = $('<div />'),
        grandparents = $(data).find(".targetClass").closest('tr');

    newElement.append(grandparents);
});
$.get(url、函数(数据){
var newElement=$(''),
祖父母=$(数据)。查找(“.targetClass”)。最近('tr');
newElement.append(祖父母);
});

我会这样做:

var newElement = $('<div>').load(url, function() {
    var o = '';
    var trs = newElement.find('tr').each(function(){
                 o += $(this).find('.targetClass').closest('tr')[0].outerHTML;
              });
    alert(o);
}); 
var newElement=$('').load(url,函数(){
var o=“”;
var trs=newElement.find('tr')。每个(函数(){
o+=$(this).find('.targetClass').closest('tr')[0].outerHTML;
});
警报(o);
}); 

我认为用
这种方式加载是不可能的。也许你可以解释一下它是如何工作的,这样我们其他人就明白了?嗯……现在我也觉得很困惑。特别是你基于outerHTML进行过滤的部分非常困惑,由于filter希望返回真/假以包含/排除集合中的元素?@adeneo我觉得现在应该这样做,但我觉得您和Barmars的答案比这更好。欢迎提出建议。我是说,不管怎样,如果这是可能的话。谢谢。这很有效。你写道:“既然你坚持这么做,我就建议你这么做。”听起来可能有更好的方法。是吗?很高兴帮助你,伙计@阿利斯泰尔克里斯蒂亚克斯。这也行得通。不确定你或Amit Joki的解决方案是否是最好的。非常感谢。这是我为你选择的解决方案。将此标记为已接受。再次感谢。
$.get(url, function(data) {
    var newElement   = $('<div />'),
        grandparents = $(data).find(".targetClass").closest('tr');

    newElement.append(grandparents);
});
var newElement = $('<div>').load(url, function() {
    var o = '';
    var trs = newElement.find('tr').each(function(){
                 o += $(this).find('.targetClass').closest('tr')[0].outerHTML;
              });
    alert(o);
});