javascript - 如何使用 find()、text()、val() 同时(连续)从 div 和 input 中查找值

标签 javascript jquery html

已解决 - 各种方法,谢谢大家,我又学到了

HTML

<div class="container">

  <div class="row">
    <div class="c1">value1</div>
    <div class="c2">value2</div>
    <div class="c3><input type="number" value="3" class="i1" /></div>
  </div>

  <div class="row">
    <div class="c1">value3</div>
    <div class="c2">value4</div>
    <div class="c3><input type="number" value="1" class="i1" /></div>
  </div>

</div>

我使用此代码提取值(此 here 的略微修改版本)

var fields = [ 'c1', 'c2','i1'];

var data = [];

$('.container .row').each(function(i, tr) {
    var row = {};
    for (var f = 0; f < fields.length; ++f) {
        row[fields[f]] = $(tr).find('.' + fields[f]).text()
    }
    data.push(row);
    console.log(data);
});

这很完美,但不适用于所有数据

c1 = value1

c2 = value2

i1 =


c1 = value3

c2 = value4

i1 =

由于 i1 是一个输入,text() 将不起作用 我需要 val(),我想知道我如何才能获取 i1 的值并将其添加到 row[fields[f]] 因此最终输出为:

(row 1) c1 = value1

c2 = value2

i1 = 3


(row 2)

c1 = value3

c2 = value4

i1 = 1

  1. 使用 if/else 不起作用,它会做一个或另一个
  2. 添加另一个 .find() 打破它
  3. 使用 function(){} 不起作用。
  4. 使用 append 或 appendTo 不起作用
  5. This在这种情况下似乎不起作用

一定有办法做到这一点。谁能帮帮我?

最佳答案

这有效 - 演示在 http://jsfiddle.net/alnitak/82Tep/

var fields = {
    c1: 'text',
    c2: 'text',
    i1: 'val'
};

var data = $('.container .row').map(function(row, tr) {
    var obj = {};
    $.each(fields, function(key, func) {
        obj[key] = $('.' + key, tr)[func]();
    })
    return obj;
}).get();

早期版本不正确,因为我没有发现 OP 需要一个对象而不是内部维度的数组。

这种方法的优点是您可以在这些元素上调用 other jQuery 函数而无需更改实际代码 - 只需更改 fields 映射以说明您想要调用哪个函数打电话。

关于javascript - 如何使用 find()、text()、val() 同时(连续)从 div 和 input 中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858716/

相关文章:

javascript - 如何为使用 JavaScript 动态创建的图像按钮提供 id?

javascript - 为函数输出添加颜色

javascript - JQuery 自动完成不适用于第一个按键事件(源是一个数组)

javascript - Cycle2 未运行

javascript - jQuery 将项目从一个选择框移动到另一个选择框,同时保留列表顺序

javascript - `new` 运算符如何能够覆盖硬绑定(bind),在 Function.prototype.bind(..)

jquery - 数据表问题和不需要的水平滚动条

javascript - 如何使用 HTML、CSS 和 JavaScript 根据值更改行的背景颜色?

javascript - 在 Javascript 中对具有可变深度的多维对象数组进行排序

javascript - 使用 : document. getElementById().value 时 Firefox 未获取值