当函数工作依赖于athor td时,如何更改以前的td样式

时间:2016-07-07 11:36:29

标签: javascript jquery

我有一个包含多个td的表。我的td是可选择的 我的要求是

1.在选择一些td并单击左侧按钮后,我想更改前一个可选项目的td(只需看下面的图片,了解所需的td)

我使用“.prev(”td“)”我认为选择之前的td并不是一个好的选择 我该如何解决这个问题enter image description here

只看到第三个&现在选择第四行第一列我想要更改未选择的td第二列第一列样式

  $(function(){
            $(document).ready(function () {
                $("tr").on("click", function () {
                    $(this).toggleClass('selected1');
                });
            });
        })
            $(function () {
                $("td.cat").dblclick(function () {
                    var OriginalContent = $(this).text();
                    $(this).addClass("cellEditing1")
                    $(this).html("<input id='value' type='text' value='" + OriginalContent + "' />");
                })

                $("tr").on("click", function () {
                    $(this).toggleClass('selected1');
                });


                $(".cat").on("click", function () {
                    $(this).toggleClass('selected');
                });

                $("#key").click(function () {

                    var sl = parseInt($(".selected").css("padding-left"));
                    sl = sl >= 100 ? "100" : "+=20";

                    $(".selected").css({
                        "padding-left": sl

                    });
                    $(".cat.selected").each(function () {

                        var paddingLeftpl = parseInt($(this).css("padding-left"));
                        var isPaddingLeft20="",isPaddingLeft40='';
                        if(paddingLeftpl>20)
                            isPaddingLeft20 = paddingLeftpl;
                        if(paddingLeftpl>40)
                            isPaddingLeft40=paddingLeftpl;
                        if (isPaddingLeft20) {

                            $(this.prev("td")).addClass("mainfunctionstyle");
                            $(this.prev("td")).find('input').addClass("mainfunctionstyle");
                            $(this.prev("td")).addClass("mainfunctionstyle")
                        }
                        if (isPaddingLeft40) {
                            $(this.prev("td")).find('input').addClass("sunfunctionstyle");
                            $(this.prev("td")).addClass("subfunctionstyle");
                            $(this.prev("td")).addClass("subfunctionstyle");

                        }
                        else $(this).addClass("color", "grey");
                    });
                });
                $("#key1").click(function () {
                    var sl = parseInt($(".selected").css("padding-left"));
                    sl = sl >= 100 ? "100" : "+=20";

                    $(".selected").css({
                        "padding-left": sl

                    });
                    $(".cat.selected").each(function () {

                        var paddingLeftpl = parseInt($(this).css("padding-left"));
                        var isPaddingLeft20="",isPaddingLeft40='';
                        if(paddingLeftpl>20)
                            isPaddingLeft20 = paddingLeftpl;
                        if(paddingLeftpl>40)
                            isPaddingLeft40=paddingLeftpl;
                        if (isPaddingLeft20) {

                            $(this.prev("td")).addclass("mainfunctionstyle");
                            $(this.prev("td")).find('input').addClass("mainfunctionstyle");
                            $(this.prev("td")).addClass("mainfunctionstyle")
                        }
                        if (isPaddingLeft40) {
                            $(this.prev("td")).find('input').addClass("sunfunctionstyle");
                            $(this.prev("td")).addClass("subfunctionstyle");
                            $(this.prev("td")).addClass("subfunctionstyle");

                        }
                        else $(this.prev("td")).addClass("color", "grey");
                    });

                });
            });
.selected {
            background-color: lightblue;
        }

        .editableTable {
            position: static;
            width: 100%;
            border-collapse: collapse;
        }

            .editableTable td {
                border: 1px solid;
                height: 17px;
            }

            .editableTable .cellEditing1 input[type=text] {
                width: 100%;
                border: none;
                text-align: left;
                background-color: transparent;
            }

            .editableTable .cellEditing1 {
                padding: 0;
                height: 1px;
            }

        .mainfunctionstyle {
            color: yellow;
            font-weight: bold;
            font-size: 10px;
        }

        .sunfunctionstyle {
            color: black;
            font-weight: normal;
            font-size: 8px;
        }

        .taskstyle {
            color: red;
            font-weight: normal;
            font-size: 8px;
        }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <button id="key">left</button>
    <button id="key1">right</button>


    <table class="editableTable">
        <tr>
            <td class="cat" >rose</td>
            <td class="cat" >red</td>
          
        </tr>
        <tr>
            <td class="cat">rose</td>
            <td class="cat">red</td>
          
        </tr>
        <tr>
            <td class="cat">rose</td>
            <td class="cat">red</td>
         
        </tr>
        <tr>
            <td class="cat">rose</td>
            <td class="cat">red</td>

        </tr>
    </table>

1 个答案:

答案 0 :(得分:2)

如果您需要选择以前的td单元格,可以使用:

$(this).closest('tr').prev('tr').find('td:eq(' + $(this).index() + ')')

而不是:

$(this.prev("td"))

我的片段:

$(function () {
  $("tr").on("click", function () {
    $(this).toggleClass('selected1');
  });
  $("td.cat").dblclick(function () {
    var OriginalContent = $(this).text();
    $(this).addClass("cellEditing1")
    $(this).html("<input id='value' type='text' value='" + OriginalContent + "' />");
  })

  $("tr").on("click", function () {
    $(this).toggleClass('selected1');
  });


  $(".cat").on("click", function () {
    $(this).toggleClass('selected');
  });

  $("#key").click(function () {

    var sl = parseInt($(".selected").css("padding-left"));
    sl = sl >= 100 ? "100" : "+=20";

    $(".selected").css({
      "padding-left": sl

    });
    $(".cat.selected").each(function () {
      var prevTd = $(this).closest('tr').prev('tr').find('td:eq(' + $(this).index() + ')');
      console.log('Current td index: ' + $(this).index());
      console.log('Previous td content: ' + prevTd.text());
      var paddingLeftpl = parseInt($(this).css("padding-left"));
      var isPaddingLeft20="",isPaddingLeft40='';
      if(paddingLeftpl>20)
        isPaddingLeft20 = paddingLeftpl;
      if(paddingLeftpl>40)
        isPaddingLeft40=paddingLeftpl;
      if (isPaddingLeft20) {
        prevTd.addClass("mainfunctionstyle");
        prevTd.find('input').addClass("mainfunctionstyle");
        prevTd.addClass("mainfunctionstyle")
      }
      if (isPaddingLeft40) {
        prevTd.find('input').addClass("sunfunctionstyle");
        prevTd.addClass("subfunctionstyle");
        prevTd.addClass("subfunctionstyle");

      }
      else $(this).css("color", "grey");
    });
  });
  $("#key1").click(function () {
    var sl = parseInt($(".selected").css("padding-left"));
    sl = sl >= 100 ? "100" : "+=20";

    $(".selected").css({
      "padding-left": sl

    });
    $(".cat.selected").each(function () {
      var prevTd = $(this).closest('tr').prev('tr').find('td:eq(' + $(this).index() + ')');
      console.log('Current td index: ' + $(this).index());
      console.log('Previous td content: ' + prevTd.text());
      var paddingLeftpl = parseInt($(this).css("padding-left"));
      var isPaddingLeft20="",isPaddingLeft40='';
      if(paddingLeftpl>20)
        isPaddingLeft20 = paddingLeftpl;
      if(paddingLeftpl>40)
        isPaddingLeft40=paddingLeftpl;
      if (isPaddingLeft20) {
        prevTd.addClass("mainfunctionstyle");
        prevTd.find('input').addClass("mainfunctionstyle");
        prevTd.addClass("mainfunctionstyle")
      }
      if (isPaddingLeft40) {
        prevTd.find('input').addClass("sunfunctionstyle");
        prevTd.addClass("subfunctionstyle");
        prevTd.addClass("subfunctionstyle");

      }
      else prevTd.css("color", "grey");
    });

  });
});
.selected {
  background-color: lightblue;
}

.editableTable {
  position: static;
  width: 100%;
  border-collapse: collapse;
}

.editableTable td {
  border: 1px solid;
  height: 17px;
}

.editableTable .cellEditing1 input[type=text] {
  width: 100%;
  border: none;
  text-align: left;
  background-color: transparent;
}

.editableTable .cellEditing1 {
  padding: 0;
  height: 1px;
}

.mainfunctionstyle {
  color: yellow;
  font-weight: bold;
  font-size: 10px;
}

.sunfunctionstyle {
  color: black;
  font-weight: normal;
  font-size: 8px;
}

.taskstyle {
  color: red;
  font-weight: normal;
  font-size: 8px;
}
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>

<button id="key">left</button>
<button id="key1">right</button>
<table class="editableTable">
    <tr>
        <td class="cat" >rose11</td>
        <td class="cat" >red12</td>
    </tr>
    <tr>
        <td class="cat">rose21</td>
        <td class="cat">red22</td>
    </tr>
    <tr>
        <td class="cat">rose31</td>
        <td class="cat">red32</td>
    </tr>
    <tr>
        <td class="cat">rose41</td>
        <td class="cat">red42</td>
    </tr>
</table>