3

我有一个 jquery 应用程序,我在其中模板化一个包含 3 个文本字段的 html 块。我需要获取特定块中文本字段的值。标识符在所有块中复制。

示例代码

<div>
  <div class="htmlBlock">
    <ul>
      <li>
        <input class="myInput1" type="text">
        <input class="myInput2" type="text">
        <input class="myInput3" type="text">
      </li>
      <li>
        <input class="myInput1" type="text">
        <input class="myInput2" type="text">
        <input class="myInput3" type="text">
      </li>
      <li>
        <input class="myInput1" type="text">
        <input class="myInput2" type="text">
        <input class="myInput3" type="text">
      </li>
    </ul>
   <button class="clickMe">Click to get values of this block</button>
  </div>
  <div class="htmlBlock">
    <ul>
      <li>
        <input class="myInput1" type="text">
        <input class="myInput2" type="text">
        <input class="myInput3" type="text">
      </li>
    </ul>
  <button class="clickMe">Click to get values of this block</button>
 </div>
</div>

当我单击.clickMe要调用的按钮$('.myInput').val()并仅在按钮所在的块内获取值时。

4

2 回答 2

2
$('button.clickMe').on('click', function() {
    var values = $(this).closest('.htmlBlock').find('input[type="text"]').map(function(){
                     return this.value;
                 }).get();
});
于 2013-07-28T22:07:59.103 回答
2

您可以执行以下操作:

$('button.clickMe').on('click', function() {
    var block = $(this).closest('.htmlBlock');
    var inputs = block.find('input[type="text"]');
    // .myInput1 values as an array.
    var myInput1Vals = block.find('.myInput1').map(function() {
        return this.value;
    });
    // Do what you want to do
});

我没有使用$('.myInput').val(),因为每个输入都有不同的类。但是你可以遍历它们,对它们做任何你想做的事情,它们都将在该块内进行本地化。

jsfiddle

这个小提琴.toArray().map. _

于 2013-07-28T22:04:15.057 回答