首页 > 解决方案 > 为什么我的 jquery 只能按顺序工作?

问题描述

在使用 JQuery 1.11 的项目中工作。我有多行数据,每行都有两个选择框。在第一个设置为特定值之前,应禁用每行中的第二个。

我的代码有效......但奇怪的是,它只有在你按顺序执行时才有效。如果我先去除了第一个之外的任何东西,它不会更新。

有人可以告诉我我做错了什么吗?谢谢!

这是一个小提琴: https ://jsfiddle.net/JCOvergaar/xLdp6wgo/9/

对于后代,这里是代码:

$(document).on('change', '.ThisFirstThings', function() {

  var dataFlag = $(".ThisFirstThings option:selected").attr('data-flag');
  if (dataFlag == 1) {
    $(this).closest("tr").find(".SecondThing").prop('disabled', false)
  } else {
    $(this).closest("tr").find(".SecondThing").prop('disabled', true)
  }
}).trigger('change');
  <form name="ThisForm" id="ThisForm">
    <div id="divDVT">
      <table>
        <tbody>
          <tr>
            <td>
              <select name="ThisFirstThing_1" id="ThisFirstThing_1" class="ThisFirstThings">
                <option value="106" data-flag="0">No change</option>
                <option value="107" data-flag="0">No change</option>
                <option value="205" data-flag="1">Should Enable -></option>
              </select> </td>
            <td>
              <select name="ThisSecondThing_1" id="ThisSecondThing_1" class="SecondThing" disabled="">
                <option value="43">one thing</option>
                <option value="82">another</option>
              </select> </td>
            <td>
              <input type="Submit" name="ThisSubmit" value="Submit"></td>
          </tr>
          <tr>
            <td>
              <select name="ThisFirstThing_2" id="ThisFirstThing_2" class="ThisFirstThings">
                <option value="106" data-flag="0">No change</option>
                <option value="107" data-flag="0">No change</option>
                <option value="205" data-flag="1">Should Enable -></option>
              </select> </td>
            <td>
              <select name="ThisSecondThing_2" id="ThisSecondThing_2" class="SecondThing" disabled="">
                <option value="43">one thing</option>
                <option value="82">another</option>
              </select> </td>
            <td>
              <input type="Submit" name="ThisSubmit" value="Submit"></td>
          </tr>
        </tbody>
      </table>
    </div>
  </form>

标签: jquery

解决方案


尝试改变

var dataFlag = $(".ThisFirstThings option:selected").attr('data-flag');

var dataFlag = $(this).find("option:selected").attr('data-flag');

原始页面中的dataFlag所有select.ThisFirstThings内容。更改目标仅更改select.ThisFirstThings


推荐阅读