我相信我已完成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; }
答案 0 :(得分:2)
你应该使用$('.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 强>