抓取指定的图像源并将其添加到输入表单中

时间:2012-11-10 17:42:18

标签: javascript jquery input

我想尝试做以下事情: 单击每个图像(缩略图)源应写入指定的输入。 我已经完成了那种......当时工作还不好!

  • 无论点击什么图像,它都不会添加正确的来源,只是第一个来源。

  • 如果再次点击相同/不同的图片,则不会删除添加的来源。

  

//一块jQuery脚本:

var imgSource = $('#textures li').find('img').attr('src');

$('ul#textures li img').on('click', function() {
    $('input#imgPath').val($('input#imgPath').val() + imgSource);
});​

小提琴,以便更好地理解: JS Fiddle link

P.S。我们将非常感谢您的回答!

4 个答案:

答案 0 :(得分:2)

attr仅返回第一个匹配元素的属性,您可以使用引用所点击元素的this关键字。

$('ul#textures li img').on('click', function() {
    $('#imgPath').val(this.src)
});

http://jsfiddle.net/Uz6rc/

答案 1 :(得分:1)

use:$(this) - 表示click元素的属性

 $('ul#textures li img').on('click', function() {
    $('input#imgPath').val($('input#imgPath').val() + $(this).attr('src'));
});​

答案 2 :(得分:1)

看看:http://jsfiddle.net/e3HzQ/

来自jQuery docs

  

.attr()方法仅获取第一个元素的属性值   在匹配的集合中。

您的imgSource变量是在事件处理程序之外声明的,因此它不会根据点击的图像改变其值 - 它只是保留第一张图像的值。

此外,之前的值未被删除,因为您要将值附加到已存在的值。

答案 3 :(得分:1)

你走了:

$('ul#textures li img').on('click', function() {
    var imgSource = $('#textures li').find('img').attr('src');
    $('input#imgPath').val($(this).attr("src"));
});

<强> DEMO

它不适合你的原因是因为你已经定义了

var imgSource = $('#textures li').find('img').attr('src');

在功能之外。然后你进一步使用以下方法在文本框中设置相同的值:

$('input#imgPath').val($('input#imgPath').val() + imgSource);

我修改了这一行来使用这个操作符来获取img src。