jQuery - 获取父母孙子的价值()

Posted

技术标签:

【中文标题】jQuery - 获取父母孙子的价值()【英文标题】:jQuery - getting val() of parents grandchildren 【发布时间】:2016-01-04 13:51:03 【问题描述】:

http://jsfiddle.net/7uygxcdL/7/

我正在尝试在选择更改时获取父 div 的孙子的 val。 我会包括一个小提琴,但可以根据需要在这里放代码......

所以在示例中.. 如果您更改第一个选择,我想控制台记录键 1 和 val 1

如果你改变秒,我想要 key 2 和 val 2...

我现在要阅读关于 jquery 查找的 DOM..

$('.reward_select').change(function()
    console.log($(this).next('input[name="reward_key"]').val());
    console.log($(this).next('input[name="reward_value"]').val());
);

还有我的 html

    <div class="reward_entry">
        <div class="reward_item">
            <div class="col-sm-2">
                <select name="item_type[]" class="reward_select">
                    <option value="1">option 1</option>
                    <option value="2">option 2</option>
                    <option value="3">option 3</option>
                </select>
            </div>

            <div class="col-sm-2">
                <input type="text" name="reward_key[]" value="key 1" />
            </div>

            <div class="col-sm-2-offset-5">
                <input type="text" name="reward_value[]" value="val 1" />
            </div>
      </div>
    ====================
      <div class="reward_item">
          <div class="col-sm-2">
              <select name="item_type[]" class="reward_select">
                  <option value="1">option 1</option>
                  <option value="2">option 2</option>
                  <option value="3">option 3</option>
              </select>
          </div>

          <div class="col-sm-2">
              <input type="text" name="reward_key[]" value="key 2" />
          </div>

          <div class="col-sm-2-offset-5">
              <input type="text" name="reward_value[]" value="val 2" />
          </div>
       </div>
     </div>

【问题讨论】:

jsfiddle.net/abhitalks/7uygxcdL/9 jsfiddle.net/7uygxcdL/12 【参考方案1】:

您的选择器不正确。 select 元素没有紧随其后的兄弟input。您可以将代码更改为:

$('.reward_select').change(function() 
  console.log($(this).parent().next().children().val());
  console.log($(this).parent().next().next().children().val());
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="reward_entry">
  <div class="col-sm-2">
    <select name="item_type[]" class="reward_select">
      <option value="1">option 1</option>
      <option value="2">option 2</option>
      <option value="3">option 3</option>
    </select>
  </div>
  <div class="col-sm-2">
    <input type="text" name="reward_key[]" value="key 1" />
  </div>
  <div class="col-sm-2-offset-5">
    <input type="text" name="reward_value[]" value="val 1" />
  </div>====================
  <div class="col-sm-2">
    <select name="item_type[]" class="reward_select">
      <option value="1">option 1</option>
      <option value="2">option 2</option>
      <option value="3">option 3</option>
    </select>
  </div>
  <div class="col-sm-2">
    <input type="text" name="reward_key[]" value="key 2" />
  </div>
  <div class="col-sm-2-offset-5">
    <input type="text" name="reward_value[]" value="val 2" />
  </div>
</div>

如果您可以更改 html 标记,我建议将 input 元素作为子元素包含在类 col-sm-2 的元素中:

$('.reward_select').change(function() 
  $(this).nextAll().children().each(function() 
    console.log($(this).val());
  );
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="reward_entry">
  <div class="col-sm-2">
    <select name="item_type[]" class="reward_select">
      <option value="1">option 1</option>
      <option value="2">option 2</option>
      <option value="3">option 3</option>
    </select>
    <div class="col-sm-2">
      <input type="text" name="reward_key[]" value="key 1" />
    </div>
    <div class="col-sm-2-offset-5">
      <input type="text" name="reward_value[]" value="val 1" />
    </div>
  </div>====================
  <div class="col-sm-2">
    <select name="item_type[]" class="reward_select">
      <option value="1">option 1</option>
      <option value="2">option 2</option>
      <option value="3">option 3</option>
    </select>
    <div class="col-sm-2">
      <input type="text" name="reward_key[]" value="key 2" />
    </div>
    <div class="col-sm-2-offset-5">
      <input type="text" name="reward_value[]" value="val 2" />
    </div>
  </div>
</div>

【讨论】:

太酷了……!!有没有办法也可以添加特定的类查找,所以我的代码本身就是 cmets... @Beertastic 如果您能够更改 html 标记,请检查我的替代方案。 @Beertastic 更新第二个示例以使用迭代获取所有 input 值。【参考方案2】:

你可以试试这个。也许不是最简单的方法。

$('.reward_select').change(function()
    console.log$(this).parent().next().children().val());
    console.log$(this).parent().next().next().children().val());
);

【讨论】:

以上是关于jQuery - 获取父母孙子的价值()的主要内容,如果未能解决你的问题,请参考以下文章

从某些父母那里退回那些他们的孩子的某些财产等于某个价值的记录?

使用 JQuery 以重力形式获取价值

如何从来自api控制器的jquery中获取价值

从 JQUERY 日期选择器中获取价值

jQuery插件如何从插件内的函数中获取价值

使用 jQuery.css 在 Internet Explorer 中获取价值