Javascript Can';t使用:not()选择器
我正在尝试制作一个Tic-Tac-Toe游戏,目前我正在自己选择框,但是在使用JQuery时:not选择器似乎不起作用Javascript Can';t使用:not()选择器,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试制作一个Tic-Tac-Toe游戏,目前我正在自己选择框,但是在使用JQuery时:not选择器似乎不起作用 函数main(){ //功能 $('.cell:非(.block')。单击(函数(){ $(此).addClass(颜色); $(this.addClass('block'); if(color='g'){color='r';}else{color='g';} }); //变数 var color='g'; } $()就绪(主) html{ 背景色:黑色; 颜色:白色; 文本
函数main(){
//功能
$('.cell:非(.block')。单击(函数(){
$(此).addClass(颜色);
$(this.addClass('block');
if(color='g'){color='r';}else{color='g';}
});
//变数
var color='g';
}
$()就绪(主)代码>
html{
背景色:黑色;
颜色:白色;
文本对齐:居中;
}
.细胞{
边框:1px纯白;
保证金:1px;
宽度:30%;高度:30%;
}
.g{背景色:石灰;}
.r{背景色:红色;}
#电路板{高度:500px;}
井字过三关
这不是jQuery选择元素的方式
当您运行$('selector')
时,将根据DOM的当前状态立即评估选择器。找到这三个元素是因为它们都没有.block
,并且单击处理程序绑定到所有这三个元素
有几种方法可以解决此问题:
- 如果希望动态评估选择器,则需要使用
on将事件委托给其中一个包含元素。特定子元素上的事件将冒泡到包含元素的处理程序,并且每次都将根据选择器进行测试。这是最昂贵的选择,也可能是最不可取的;这种逻辑不应该依赖jQuery选择器:
$('.board').on('click', '.cell:not(.block)', function () {
// ...
});
.block
:
$('.cell').click(function () {
if ($(this).hasClass('block')) return;
//...
.block
类的同时解除单击处理程序的绑定
$('.cell').click(function () {
$(this).unbind( "click" );
// ...
- jQuery不是这样选择元素的
当您运行
$('selector')
时,将根据DOM的当前状态立即评估选择器。找到这三个元素是因为它们都没有.block
,并且单击处理程序绑定到所有这三个元素
有几种方法可以解决此问题:
- 如果希望动态评估选择器,则需要使用on将事件委托给其中一个包含元素。特定子元素上的事件将冒泡到包含元素的处理程序,并且每次都将根据选择器进行测试。这是最昂贵的选择,也可能是最不可取的;这种逻辑不应该依赖jQuery选择器:
$('.board').on('click', '.cell:not(.block)', function () { // ... });
- 或者,最简单、最便宜的方法是在单击处理程序中简单地检查
:.block
$('.cell').click(function () { if ($(this).hasClass('block')) return; //...
- 最后,您可以在添加
类的同时解除单击处理程序的绑定.block
$('.cell').click(function () { $(this).unbind( "click" ); // ...
- jQuery不是这样选择元素的
当您运行
$('selector')
时,将根据DOM的当前状态立即评估选择器。找到这三个元素是因为它们都没有.block
,并且单击处理程序绑定到所有这三个元素
有几种方法可以解决此问题:
- 如果希望动态评估选择器,则需要使用on将事件委托给其中一个包含元素。特定子元素上的事件将冒泡到包含元素的处理程序,并且每次都将根据选择器进行测试。这是最昂贵的选择,也可能是最不可取的;这种逻辑不应该依赖jQuery选择器:
$('.board').on('click', '.cell:not(.block)', function () { // ... });
- 或者,最简单、最便宜的方法是在单击处理程序中简单地检查
:.block
$('.cell').click(function () { if ($(this).hasClass('block')) return; //...
- 最后,您可以在添加
类的同时解除单击处理程序的绑定.block
$('.cell').click(function () { $(this).unbind( "click" ); // ...
- jQuery不是这样选择元素的
当您运行
$('selector')
时,将根据DOM的当前状态立即评估选择器。找到这三个元素是因为它们都没有.block
,并且单击处理程序绑定到所有这三个元素
有几种方法可以解决此问题:
- 如果希望动态评估选择器,则需要使用on将事件委托给其中一个包含元素。特定子元素上的事件将冒泡到包含元素的处理程序,并且每次都将根据选择器进行测试。这是最昂贵的选择,也可能是最不可取的;这种逻辑不应该依赖jQuery选择器:
$('.board').on('click', '.cell:not(.block)', function () { // ... });
- 或者,最简单、最便宜的方法是在单击处理程序中简单地检查
:.block
$('.cell').click(function () { if ($(this).hasClass('block')) return; //...
- 最后,您可以在添加
类的同时解除单击处理程序的绑定.block
$('.cell').click(function () { $(this).unbind( "click" ); // ...
.on()
函数main(){
//功能
$('#board')。在('click','上。单元格:非(.block'),函数(){
$(this.addClass(color).addClass('block');
颜色=颜色='g'?'r':'g';
});
//变数
var color='g';
}
$()就绪(主)代码>
html{
背景色:黑色;
颜色:白色;
文本对齐:居中;
}
.细胞{
边框:1px纯白;
保证金:1px;
宽度:30%;
身高:30%;
}
g{
背景色:石灰;
}
r{
背景色:红色;
}
#董事会{
高度:500px;
}
井字过三关
由于您在选择后要更改类,因此它将被视为动态选择器,您需要使用.on()
函数main(){
//功能
$('#board')。在('click','上。单元格:非(.block'),函数(){
$(this.addClass(color).addClass('block');
颜色