0

idこのコードが、テキスト入力の s としてのキーと、テキスト入力の値としての値を持つオブジェクトを与えないのはなぜですか?

JS

$(document).ready(function () {
    $('body').on('click', '#btn', function () {
        var address = {};
        $('input[type="text"].address').each(function (index, element) {
            address[element.id] = $(element).val();
        });
        console.log(address);
    });
});

HTML

  <input class="address" id="attn" value="john doe">
  <input class="address" id="address_1" value="1234 sample st">
  <input class="address" id="address_2" value="Suite 1">
  <input class="address" id="city" value="chicago">
  <input class="address" id="state" value="IL">
  <input class="address" id="zip" value="12345">
  <input class="address" id="country" value="US">
  <input type="button" id="btn" value="btn" />

jsbin

4

5 に答える 5

2

入力には[type=text]属性がないため、セレクターはそれらのいずれにも一致しません。単にそれを削除するか、:textセレクターを使用してください:

var address = {};
$(':text.address').each(function (index, element) {
    address[element.id] = element.value;
});
console.log(address);

更新されたデモ

于 2013-02-13T15:28:05.437 に答える
2

これは、入力に何も返されていないtype="text"ためです。$('input[type="text"].address')

入力がテキスト型であることを示すためにそれらを追加することをお勧めします。

于 2013-02-13T15:27:08.527 に答える
1

jQuery 属性セレクター (およびブラウザー クエリ セレクター) は、プロパティではなく DOM 要素を操作します。入力要素に明示的にtype属性宣言がなく、 typeプロパティが( http://jsfiddle.net/g76UC/ )であっても要素が見つからない場合。$("[type]")document.querySelector("[type]")text

type=text最も簡単な解決策は、HTML の入力要素に追加することです。もう 1 つは、この属性定義を必要としない別のセレクターを使用することです。最後の (そして最も望ましくない) 方法は、代わりに要素の typeプロパティ:propをチェックするような別のセレクターを作成することです。ただし、これはすでに jQuery の.:text

于 2013-02-13T15:33:18.007 に答える
0

使用するthis

 $('input.address').each(function () {      
        address[this.id]= $(this).val();
 });

デモhttp://jsbin.com/osufok/12/edit

于 2013-02-13T15:32:44.047 に答える
0

これを試してみてくださいhttp://jsfiddle.net/adiioo7/TPYtg/

$(document).ready(function () {
    $('#btn').on('click', function () {
        var address = {};
        $('.address').each(function (index, element) {
            address[element.id] = $(element).val();
        });
        console.log(address);
    });
});
于 2013-02-13T15:34:14.807 に答える