如何在jQuery对象选择器链中找到最后一个实际元素?

时间:2018-08-01 19:34:52

标签: javascript jquery

以下是一些示例变量:

var source = $('.container').find('img').attr('src');
var source = $('.container').find('img').attr('href');
var source = $('.container').find('img').html();

对于每个示例,我需要从选择器中获取实际元素。

以下失败: source.hide();

end与我正在寻找的功能类似,但是如果变量返回字符串,则它不起作用。

结束是这样的:

$('.container').find('img').css('background', 'red').end().find('.something-else').css('background', 'green');

之所以可行,是因为css方法是应用样式,而不是返回信息

以下示例将失败,因为css返回了背景CSS:

$('.container').find('img').css('background').end().find('.something-else');

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法实现所追求的目标。该变量只是一个string-您无法确定它的设置方式,如何获取等。


您可以使用的最接近的解决方法是属性选择器。如果您有与图像的src属性有关的字符串,则可以采用该字符串,并选择src属性匹配的所有元素。

但是,这不能确保您将获得相同的选择器。如果我从一个图像获得src属性,并且页面上还有十个其他图像,它们具有相同的src,则反向查找将返回所有10个元素,而不仅仅是原始变量的1个来自。

var source = $('.container').find('img').attr('src');

var $element = $('[src=' + source + ']');
$element.hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <img id="myImage" src="SOURCE" />
</div>


  

是否可以设置两个变量,一个用于元素,一个用于将返回字符串的扩展名?然后以某种方式吸引他们? var sourceElement = $('.container').find('img'); var sourceExtension = "attr('src')"; var sourceSrc = sourceElement.sourceExtension

假设您可以使用eval(),但我个人避免像瘟疫那样使用它。也许更好的解决方案是:

var sourceElement = $('.container').find('img');
var getSrc = (elem) => $(elem).attr("src");
var sourceSrc = getSrc(sourceElement);

console.log(sourceSrc);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
    <img src="SOURCE" />
</div>