【发布时间】:2014-05-16 00:41:47
【问题描述】:
我有一个动态加载一个或多个图像的 div。最初,所有这些图像都是作物。目的是,当用户单击裁剪后的图像时,其 src 将被完整大小的版本替换。单击完整大小的版本以返回裁剪后的图像。我不知道图像的文件名,除了它们都是数字,除了完整版的文件名中的第一个字符是“L”。
这段代码有效,但我相信一定有更简单的方法:
$('#class').on('click', '> img', function() {
var src = $(this).attr('src');
var test_src = src.match(/L/g);
var img_id = src.replace(/L/g, '');
var big_img = src.replace('/images/', '/images/L');
if (test_src == undefined) {
$(this).attr('src', big_img)
} else {
$(this).attr('src', img_id);
}
});
我只能用这段代码解决的问题是,如果我只是获得了 img src 并添加了一个“L”,那么在第一次点击之后,img src 就会变成类似“/images/L123345.jpg”的东西,因此,再次单击它以返回原始 src ('/images/12345.jpg') 只是添加了第二个 L。
我确定我错过了一些非常明显的东西。感谢您的任何建议。
【问题讨论】:
-
你试过
if (test_src == null)而不是if (test_src == undefined) -
否 - 但如前所述,此代码工作正常。我只是认为这是一种非常复杂的方法来做一些简单的事情。
-
您对
img标签的生成有多少控制权?您可以将号码存储在id属性中吗?如果您最初有例如,我可以想到一些更简单的方法。<img id="12345" class="class" src="/images/12345.jpg"> -
是的,我可以添加一个 id = [image id]。出于某种我现在无法理解的原因,我希望避免这样做。