Javascript Can';t使用: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{ 背景色:黑色; 颜色:白色; 文本

我正在尝试制作一个Tic-Tac-Toe游戏,目前我正在自己选择框,但是在使用JQuery时:not选择器似乎不起作用

函数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');
              颜色