Javascript 设置数据设置为“的所有元素边框”;是”;
我有这一系列的图标,我可以选择和设置它们的边框。我将选择的图标数量限制为5个。第一个选中的将成为黄色边框。接下来的4个是黑色边框。当我再次单击它们时,它们需要取消设置。我使用Javascript 设置数据设置为“的所有元素边框”;是”;,javascript,jquery,Javascript,Jquery,我有这一系列的图标,我可以选择和设置它们的边框。我将选择的图标数量限制为5个。第一个选中的将成为黄色边框。接下来的4个是黑色边框。当我再次单击它们时,它们需要取消设置。我使用.data方法: 在document.ready上,我执行以下操作: $('img.selectable').click(function(){ image_click(this); }); 对于CSS: .selectable { border: 3px solid #ebe6b3; float:
.data
方法:
在document.ready上,我执行以下操作:
$('img.selectable').click(function(){
image_click(this);
});
对于CSS:
.selectable {
border: 3px solid #ebe6b3;
float:left;
margin:1px;
}
对于HTML:
<img class="selectable" src="img/first_icon.png">
我有这个功能:
function image_click(e)
{
if($(e).data("clicked")=="yes")
{
images_selected--;
$(e).data("clicked","no").css('border','3px solid ' + NEUTRAL_COLOR);
if(images_selected==1)
{
// PROBLEM HERE
$(e).data("clicked==yes").css('border','3px solid ' + YELLOW_COLOR);
// PROBLEM HERE
// How do I set the remaining img elements with data
// "clicked"=="yes" to be YELLOW?
}
}
else
{
if (images_selected<5)
{
images_selected++;
if(images_selected==1)
{
$(e).data("clicked","yes").css('border','3px solid ' YELLOW_COLOR);
}
else
{
$(e).data("clicked","yes").css('border','3px solid ' + BLACK_COLOR);
}
}
}
};
功能图像\u单击(e)
{
如果($(e).数据(“单击”)=“是”)
{
所选图像--;
$(e).数据(“点击”,“否”).css('边框','3px实心'+中性色);
如果(所选图像==1)
{
//这里有问题
$(e).data(“单击==yes”).css('border','3px solid'+黄色);
//这里有问题
//如何使用数据设置剩余的img元素
//“单击”==“是”将变为黄色?
}
}
其他的
{
如果选择了(images_)您可以选择图像,使用该方法排除单击的图像,然后使用该方法过滤剩余的具有“yes”
的图像
示例:
编辑:尽管我倾向于这样实现它,所以您不需要使用.data()
:
var NEUTRAL_COLOR=“#ebe6b3”;
var YELLOW_COLOR=“黄色”;
var BLACK_COLOR=“黑色”;
所选var=[];
var imgs=$('img.selective')。单击(图像单击);
var updateColors=函数(){
$(选中[0]).css('border','3px solid'+黄色);
$(选定的.slice(1)).css('border','3px solid'+黑色);
imgs.not(selected).css('border','3px solid'+中性色);
}
功能图像\单击(e){
var idx=$.inArray(此,选中);
如果(idx!=-1){
选择。拼接(idx,1);
}否则如果(已选择。长度<5){
选中。推送(此);
}否则{
返回;
}
更新颜色();
}
示例:
这只是维护一个选定项目的数组,在单击一个项目时修改数组(如果少于5个),并更新颜色
数组开头的元素是单击的第一个元素。如果再次单击上一个“第一个”元素,它将被拼接,使数组中的第二个项目成为新的“第一个”,因此它会得到黄色边框。您可以选择图像,使用该方法排除单击的图像,然后使用该方法过滤具有“是”的剩余图像。
示例:
编辑:尽管我倾向于这样实现它,所以您不需要使用
.data()
:
var NEUTRAL_COLOR=“#ebe6b3”;
var YELLOW_COLOR=“黄色”;
var BLACK_COLOR=“黑色”;
所选var=[];
var imgs=$('img.selective')。单击(图像单击);
var updateColors=函数(){
$(选中[0]).css('border','3px solid'+黄色);
$(选定的.slice(1)).css('border','3px solid'+黑色);
imgs.not(selected).css('border','3px solid'+中性色);
}
功能图像\单击(e){
var idx=$.inArray(此,选中);
如果(idx!=-1){
选择。拼接(idx,1);
}否则如果(已选择。长度<5){
选中。推送(此);
}否则{
返回;
}
更新颜色();
}
示例:
这只是维护一个选定项目的数组,在单击一个项目时修改数组(如果少于5个),并更新颜色
数组开头的元素是单击的第一个元素。如果再次单击上一个“第一个”元素,它将被拼接,使数组中的第二个项目成为新的“第一个”,因此它将获得黄色边框
$('img.selectable').not( e ).filter(function() {
return $( this ).data("clicked")=="yes";
}).css('border','3px solid ' + YELLOW_COLOR);
var NEUTRAL_COLOR = "#ebe6b3";
var YELLOW_COLOR = "yellow";
var BLACK_COLOR = "black";
var selected = [];
var imgs = $('img.selectable').click(image_click);
var updateColors = function() {
$(selected[0]).css('border', '3px solid ' + YELLOW_COLOR);
$(selected.slice(1)).css('border', '3px solid ' + BLACK_COLOR);
imgs.not(selected).css('border', '3px solid ' + NEUTRAL_COLOR);
}
function image_click(e) {
var idx = $.inArray(this, selected);
if (idx !== -1) {
selected.splice(idx, 1);
} else if (selected.length < 5) {
selected.push(this);
} else {
return;
}
updateColors();
}