0

如何将事件添加到板内的单元格?我有一个 9x9 的网格,我想向它们添加一个事件,例如,这是我的 HTML 网格的一部分:

<div class="container">
    <div class="dad-board">
      <div class="dad-row">
        <div class="dad-cell">
            <input type="number"  data-column="0" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="1" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="2" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="3" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="4" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="5" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="6" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="7" data-line="0">
        </div>
        <div class="dad-cell">
            <input type="number"  data-column="8" data-line="0">
        </div>
        ...
      </div>
    </div>

现在在 jquery 我想做这样的事情:

(function() {
    'use strict'


    $('#dad-board > dad-cell').focusout(function(){

        if($(this).text()>0 && $(this).text()<10){

            $(this).addClass('with-value');
        }else{
            $(this).removeClass('with-value');
        }

    });
}());
4

2 回答 2

1

两件事情:

$('#dad-board > dad-cell')类名中应该是.dad-cell.

.dad-celldiv,因此他们没有focusout事件。我想你的意思是$('#dad-board > .dad-cell input')

为了使您当前的代码正常工作,您还必须进行一些调整:

$('#dad-board > .dad-cell input').focusout(function(){
    //as we're talking about input fields, the value is read with val(), not text()
    //and as you're gonna evaluate it as an integer, lets convert the value to integer
    var value=parseInt($(this).val());       
    if(!isNaN(value)&&value>0 && value<10){
        //you might want to set with-value to the <div>, not the input
        $(this).parent().addClass('with-value');
    }else{
        //you might want to set with-value to the <div>, not the input
        $(this).parent().removeClass('with-value');
    }
});
于 2016-10-08T16:59:59.377 回答
1

您的$('#dad-board > dad-cell')选择器错误,应该是 $('.dad-board >.dad-row> .dad-cell').

.类不应该#

A > E只选择第一个孩子。

任何作为 A 元素的子元素(即直接后代)的 E 元素

A E可以选择所有后代,比如$('.dad-board .dad-cell')

作为 A 元素的后代的任何 E 元素(即:子元素,或子元素的子元素等)

于 2016-10-08T17:09:00.903 回答