Jquery代码有一些问题。我想根据窗口宽度更改页面上的图像。。。
下面的代码几乎符合我的要求,但有一个错误——它准备了多个图像。。。在我重新调整浏览器大小后,它会产生越来越多的克隆。
如果你能给我任何帮助,我将不胜感激
这是我的代码
(function ($) {
var $window = $(window),
$img2 = $('#img2');
$img4 = $('#img4');
function resize() {
if ($window.width() < 750) {
$img2.remove()
$('.illu').prepend('<img id="img4" class="illu-img4 pulse_image" src="img/illu4.jpg" width="100%"/>')
} else if ($window.width() > 750) {
$img4.remove()
$('.illu').prepend('<img id="img2" class="illu-img2 pulse_image" src="img/illu2.jpg" width="100%"/>')
}
}
$window.resize(resize)
.trigger('resize');
})(jQuery);
如果图像在同一个地方,而你实际上只是想替换它们,你可以只拥有一张图片并更改来源:
var $window = $(window),
$img = $('#img');
function resize() {
if ($window.width() < 750) {
$img.attr('src', 'img/illu4.jpg');
}
else if ($window.width() > 750) {
$img.attr('src', 'img/illu2.jpg');
}
}
另一个更好的选择是根据需要隐藏/显示它们:
var $window = $(window),
$img2 = $('#img2');
$img4 = $('#img4');
function resize() {
if ($window.width() < 750) {
$img2.hide()
$img4.show()
} else if ($window.width() > 750) {
$img2.show()
$img4.hide()
}
}
您需要将$img2
&调整大小事件函数内部的$img4
选择器:
jQuery(function ($) {
var $window = $(window);
function resize() {
var $img2 = $('#img2');
var $img4 = $('#img4');
if ($window.width() < 750) {
$img2.remove()
$('.illu').prepend('<img id="img4" class="illu-img4 pulse_image" src="img/illu4.jpg" width="100%"/>')
} else if ($window.width() > 750) {
$img4.remove()
$('.illu').prepend('<img id="img2" class="illu-img2 pulse_image" src="img/illu2.jpg" width="100%"/>')
}
}
$window.resize(resize)
.trigger('resize');
});
当您移除它们时,您的引用将被破坏,并在后续移除时在DOM中留下任何新图像。
注意:我还将IIFE语法(function($){YOUR CODE HERE})(jQuery);
切换为更安全的DOM就绪快捷方式格式:jQuery(function($){YOUR CODE HERE});
。
正如Banana
所建议的,您最好不要创建和删除图像,而是隐藏/显示/重用图像,但这只是为了解决代码的实际问题:(
function resize() {
if ($window.width() < 750) {
$img2.remove()
$img4 = $('<img id="img4" class="illu-img4 pulse_image" src="img/illu4.jpg" width="100%"/>').prependTo('.illu');
} else if ($window.width() > 750) {
$img4.remove()
$img2 = $('<img id="img2" class="illu-img2 pulse_image" src="img/illu2.jpg" width="100%"/>').prependTo('.illu');
}
}
你可以试试这样的东西。调整正文大小时,将丢失引用。