- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
1 [使用来自@Justinas 的代码后]
<div>
<span class="r1 c1 d1" data-weight="3"></span>
<span class="r1 c2" data-weight="2"></span>
<span class="r1 c3 d2" data-weight="3"></span>
</div>
<div>
<span class="r2 c1" data-weight="2"></span>
<span class="r2 c2 d1 d2" data-weight="4"></span>
<span class="r2 c3" data-weight="2"></span>
</div>
<div>
<span class="r3 c1 d2" data-weight="3"></span>
<span class="r3 c2" data-weight="2"></span>
<span class="r3 c3 d1" data-weight="3"></span>
</div>
所以,这些是我得到的 span 和 div,我正在制作井字游戏(计算机对玩家),它应该像我无法打败计算机一样工作。我放置了数据权重属性来显示确切跨度的值(value)。我有攻击功能的问题-我需要让它像它首先在最有值(value)的范围内攻击玩家一样(中间的行和列,然后是对 Angular 线,然后是图片中添加的所有其他/更多细节2)我真的不知道如何制作一个函数来获取所有这些数据权重,并按降序对它们进行排序,以选择所有可用范围中最有值(value)的范围……谢谢!
我之前做了一个函数,它只是按照出现顺序而不是数据权重在每个跨度中进行攻击。
function attack() {
var span = ['.r1 c1 d1', '.r2 c1', '.r3 c1 d2', '.r1 c2', '.r2 c2 d1 d2', '.r3 c2', '.r1 c3 d2', '.r2 c3', '.r3 c3 d1'];
var weight = $('[data-weight]');
var tempLoop = true;
$.each(weight, function (k, span){
var weight= $(weight).data('weight');
$(span).each(function () {
if (tempLoop) {
if (isNaN($(this).data("full"))) {
$(this).data("full", 1)
.data("value", -1)
.html("<i class=\"fa fa-times\"></i>");
console.log("attack");
tempLoop = false;
}
}
});
})
}
最佳答案
使用 .sort()
函数并比较两个元素的 .data('weight')
,然后您将按重量对元素进行排序,循环它或选择首先是权重最高的。将相对权重应用到攻击第一个细胞
$(document).ready(function() {
$('.table span')
.sort(function(a, b) {
return $(b).data('weight') - $(a).data('weight');
})
.each(function(k, i) {
var $this = $(this);
setTimeout(function () {
$this.text(k + '/' + $this.data('weight'));
}, k * 200);
});
});
.table {
width: 300px;
height: 300px;
}
.table div {
height: 100px;
}
.table span {
box-sizing: border-box;
border: 1px solid white;
background: #555;
width: 33.333%;
height: 100%;
float: left;
display: inline-block;
color: white;
text-align: center;
line-height: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
{attack-order / cell-weight}
<hr/>
<div class="table">
<div>
<span class="r1 c1 d1" data-weight="3"></span>
<span class="r1 c2" data-weight="2"></span>
<span class="r1 c3 d2" data-weight="3"></span>
</div>
<div>
<span class="r2 c1" data-weight="2"></span>
<span class="r2 c2 d1 d2" data-weight="4"></span>
<span class="r2 c3" data-weight="2"></span>
</div>
<div>
<span class="r3 c1 d2" data-weight="3"></span>
<span class="r3 c2" data-weight="2"></span>
<span class="r3 c3 d1" data-weight="3"></span>
</div>
</div>
游戏示例
$(document).ready(function() {
computerMove();
$('.table span:not(.full)').click(function() {
$(this).addClass('full player');
computerMove();
checkWinner();
});
});
function computerMove() {
$('.table span:not(.full)')
.sort(function(a, b) {
return $(b).data('weight') - $(a).data('weight');
})
.first()
.addClass('full computer');
}
function checkWinner() {
if ($('.table span:not(.full)').length == 0) {
// Do your logic of winning here:
var hasWon = Math.random() > 0.5;
if (hasWon) {
alert('You have won');
} else {
alert('You have lost');
}
} else {
return undefined;
}
}
function restartGame() {
$('.table span').removeClass('full');
computerMove();
}
.table {
width: 300px;
height: 300px;
}
.table div {
height: 100px;
}
.table span {
box-sizing: border-box;
border: 1px solid white;
background: #555;
width: 33.333%;
height: 100%;
float: left;
display: inline-block;
color: white;
text-align: center;
line-height: 100px;
}
.table span.full {
background: white;
border-color: black;
}
.table span:not(.full):hover {
background-color: #666;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
{attack-order / cell-weight}
<hr/>
<div class="table">
<div>
<span class="r1 c1 d1" data-weight="3"></span>
<span class="r1 c2" data-weight="2"></span>
<span class="r1 c3 d2" data-weight="3"></span>
</div>
<div>
<span class="r2 c1" data-weight="2"></span>
<span class="r2 c2 d1 d2" data-weight="4"></span>
<span class="r2 c3" data-weight="2"></span>
</div>
<div>
<span class="r3 c1 d2" data-weight="3"></span>
<span class="r3 c2" data-weight="2"></span>
<span class="r3 c3 d1" data-weight="3"></span>
</div>
</div>
关于jquery - 如何按数据权重属性对数据进行排序和获取排序数据?查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41120262/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!