2

これは機能しますが、リストが大きくなるにつれて肥大化する初心者向けコードです。新しい入力が作成されるたびにクリック機能ビットを繰り返すのをなくすアプローチを探しています。

一意の名前を持つボタンとして div を作成し、そのボタンに関連付けられた一意の JSON ファイルでいくつかの値を呼び出し、その値を localStorage に保存します (クリックは常に同じ関数を呼び出します)。

この例では 3 つだけを扱いますが、リストはさらに数十に増える可能性があります。

<div style="display:none;">
<input class="hiddenWebInput" id="webImportInput1" type="text" value="fooList1.txt"  />
<input class="hiddenWebInput" id="webImportInput2" type="text" value="bar.txt"  />
<input class="hiddenWebInput" id="webImportInput3" type="text" value="foo.txt"  />
</div>

<script>


$("#webImport1").click(function() {

localStorage.setItem("picked", document.getElementById("webImportInput1").value);

getList();

});


$("#webImport2").click(function() {

localStorage.setItem("picked", document.getElementById("webImportInput2").value);

getList();

});


$("#webImport3").click(function() {

localStorage.setItem("picked", document.getElementById("webImportInput3").value);

getList();

});

これgetList()は、他の localStorage 値を設定し、他のことを実行するために使用するものです。

事前にアドバイスをありがとう!

4

3 に答える 3

1

私の最初の考えは次のとおりです。

$("input[id^=webImport]").click(function() {
    var num = this.id.match(/d+/);
    localStorage.setItem("picked", document.getElementById("webImportInput" + num).value);
    getList();
});

classしかし、正直なところ、それはあなたがinput要素を持っているという事実に取って代わられました。

$("input.hiddenWebInput").click(function() {
    var num = this.id.match(/d+/);
    localStorage.setItem("picked", document.getElementById("webImportInput" + num).value);
    getList();
});

そして、jQuery と DOM の選択方法を組み合わせて使用​​するのではなく、jQuery を使用するように少し改良しました。

$("input.hiddenWebInput").click(function() {
    var num = this.id.match(/d+/);
    localStorage.setItem("picked", $("#webImportInput" + num).val());
    getList();
});
于 2012-08-06T00:02:15.540 に答える
1

これを試して:

$('div[id^="webImport"]').click(function() {
   var n = this.id.match(/\d+/g);
   localStorage.setItem("picked", $("#webImportInput"+n).val());
   getList();
})
于 2012-08-06T00:03:40.287 に答える
0

機能がすべて同じであれば、id の代わりにクラスを使用してイベントをバインドできます。

お気に入り

$('.hiddenWebInput').click(function(){
    localStorage.setItem("picked", $(this).val());
});
于 2012-08-06T00:01:58.427 に答える