如何使用jQuery以与$(this)相同的方式选择元素?
好的,我有一个(Wordpress支持的)网站,上面有一些图片。我想在这些图像溢出内容分区时缩放它们。为了使它们正确缩放,幸运的是,我可以添加一个类如何使用jQuery以与$(this)相同的方式选择元素?,jquery,this,Jquery,This,好的,我有一个(Wordpress支持的)网站,上面有一些图片。我想在这些图像溢出内容分区时缩放它们。为了使它们正确缩放,幸运的是,我可以添加一个类。scaled,它将使图像宽度:100%,这样就可以解决问题了 我的问题是,当我检测一个图像对于页面来说是否太大时,我似乎无法在页面上只选择那个特定的图像 HTML: 现在,对于jQuery。我目前的设置如下: $(window).resize(function() { if($('section .entry-content img').w
。scaled
,它将使图像宽度:100%代码>,这样就可以解决问题了
我的问题是,当我检测一个图像对于页面来说是否太大时,我似乎无法在页面上只选择那个特定的图像
HTML:
现在,对于jQuery。我目前的设置如下:
$(window).resize(function() {
if($('section .entry-content img').width() > $('.entry-content').width()) {
$(this).addClass('scaled')
}
});
我的问题在于,$(this)
,就像它经常遇到的那样。我猜它没有选择这里的实际图像,而是选择了其他的东西,或者没有特别的东西
所以我的问题是,用jQuery只选择一个图像并对其应用一个类的最佳方法是什么?我希望看到一些只涉及将$(this)
更改为其他内容的内容
提前谢谢 一种方法是使用如下变量:
$(window).resize(function() {
var $img = $('section .entry-content img')[0];
if($img.width() > $('.entry-content').width()) {
$img.addClass('scaled')
}
});
尝试将jQuery方法更改为:
$(window).resize(function() {
$( "section .entry-content img" ).each(function() {
if($(this).width() > $('.entry-content').width()) {
$(this).addClass('scaled')
}
});
});
这应该处理每个独立img元素的函数(并且“This”是相对的)。对于一个函数,这里已经有了很多很好的答案,但我认为值得补充的是,在事件回调函数的上下文中,关键字this
指的是JQuery传入的DOM元素。因此,在前面的示例中,$(this)
实际上导致了一个JQuery对象包装窗口
元素
$(window).on('resize', function() {
$('section .entry-content img').filter(function() {
return $(this).width() > $(this).closest('.entry-content').width();
}).addClass('scaled');
});
因此,正如您在许多其他示例中所看到的,解决方案是更改JQuery对象的选择器,从中使用this
您处于$(窗口)
的范围内,if语句不会更改范围。是!这工作完美无瑕,非常感谢!我不应该说我在括号中做了更改,即$(this).width()之后的括号。那个括号把代码搞乱了,让我惊慌失措。非常感谢你的帮助!:)哦,哎呀,是的,我的打字错误。我已经用修复程序更新了我的原始答案。谢谢
$(window).resize(function() {
$( "section .entry-content img" ).each(function() {
if($(this).width() > $('.entry-content').width()) {
$(this).addClass('scaled')
}
});
});
$(window).on('resize', function() {
$('section .entry-content img').filter(function() {
return $(this).width() > $(this).closest('.entry-content').width();
}).addClass('scaled');
});