colorSelect函数将alt标记传递给输入字段

时间:2013-07-02 20:52:01

标签: jquery function click

我相信我已完成90%的代码。我想要实现的是为任何目的创建可重用的功能。该功能的作用是当用户选择颜色样本时,img上的alt标签被发送到输入字段。我似乎对实际功能本身存在问题,因为当我点击颜色时似乎没有任何事情发生。目前这可以作为一个Jquery程序,但我现在正在尝试将其构建为我们库中的一部分功能。 jsfiddle

Jquery的

colorSelect = function(){

var colorval = $('#FIELD_').val();
$(this).find('img[alt="' + colorval + '"]').addClass('color-field-selected');
    var colortitle = $(this).attr('alt');
    $(this).addClass('color-field-selected').siblings().removeClass('color-field-selected');

    $('#FIELD_').attr('value', colortitle);

    return false;

}; $(函数(){

  $('.color-field img').on( 'click',colorSelect());

});

HTML

<div class="color-field">
  <div class="color-size">
<img border="0" src="http://www.pflivedevelopment.com/custom/tabs_custom_skin/images/black.jpg" title="PMS Black 185" alt="Black">
<img border="0" src="http://www.pflivedevelopment.com/custom/tabs_custom_skin/images/green.jpg" title="Green PMS 347" alt="Green">
 <img border="0" src="http://www.pflivedevelopment.com/custom/tabs_custom_skin/images/blue.jpg" title="Blue PMS 300" alt="Blue">
 <img border="0" src="http://www.pflivedevelopment.com/custom/tabs_custom_skin/images/red.jpg" title="Red PMS 185" alt="Red">
   </div>
    <input id="Field_" type="text">
</div>

CSS

.color-size {
height: 45px;
overflow: hidden;
}
.color-size img {
cursor: pointer;
}
.color-field-selected {

border:2px solid#000000;     位置:相对;     上:2px;     }

2 个答案:

答案 0 :(得分:2)

http://jsfiddle.net/8vs6R/5/

你应该使用$('.color-field img').on('click', colorSelect); // <-- Removed ()
您的ID不是#FIELD_,而是#Field_;)

colorSelect = function () {

    var colorval = $('#Field_').val();
    $(this).find('img[alt="' + colorval + '"]').addClass('color-field-selected');
    var colortitle = $(this).attr('alt');
    $(this).addClass('color-field-selected').siblings().removeClass('color-field-selected');

    $('#Field_').attr('value', colortitle);

    return false;
};
$(function () {

    $('.color-field img').on('click', colorSelect);
});

你有很多无用的东西和逻辑。
为了简化你的代码,请执行以下操作:
http://jsfiddle.net/8vs6R/10/

function colorSelect() {
    $(this).addClass('color-field-selected').siblings().removeClass('color-field-selected');
    $('#Field_').val(this.alt) ;
}


$(function () {
    $('.color-field img').on('click', colorSelect);
});

答案 1 :(得分:2)

您正在将函数的结果设置为处理程序,而不是将函数引用本身设置为处理程序。

这里函数将在绑定处理程序时调用,并将结果作为函数的处理程序附加,在你的情况下是一个布尔值。

变化:

$('.color-field img').on( 'click',colorSelect()); 

$('.color-field img').on( 'click',colorSelect);

此外,选择器也区分大小写,因此#FIELD_!= #Field_

<强> Fiddle