現在の内容に基づいて、ラベルの一連の「for」属性を置き換えようとしています。
アプリケーションはAJAXを使用して、ページを更新せずに請求書にアイテムを追加しています。アイテムの追加が成功したという通知を受け取ったら、スクリプトは、「for」属性が「-new」で終わるフォームのすべてのラベルを、同じ属性から「-new」を引いたものに置き換え、('-' + itemValue)を追加する必要があります。ここで、itemValueは、追加された請求書アイテムのアイテムIDです。
一度に変更したいすべてのラベルを選択する方法を知っています。
jQuery('label[for$=new]')
'for'属性を取得する方法を知っています:
jQuery('label[for$=new]').attr('for')
JavaScriptのreplaceメソッドを試しました:
jQuery('label[for$=new]').attr('for').replace(/-new/,itemValue)
しかし、置換したい'for'属性を持つラベルを識別する方法がわからないため、各ラベルの'for'属性を選択し、テキストを置き換え、置き換えられたテキストを(何も戻さずに)戻すように見えます。
ここにいくつかのサンプルHTMLがあります:
<form id="InvoiceItemsForm-1" action="<?=$_SERVER['PHP_SELF'];?>" method="post" name="InvoiceItemsForm-1" onsubmit="return false">
<div id="InvoiceItem-new-1" class="InvoiceItem">
<label for="InvoiceItemNumber-new">New Invoice Item Number: </label>
<input id="InvoiceItemNumber-new" class="InvoiceItemNumber" type="text" value="" name="InvoiceItemNumber-new">
<label for="InvoiceItemDescription-new">Item Description: </label>
<input id="InvoiceItemDescription-new" class="InvoiceItemDescription" type="text" value="" name="InvoiceItemDescription-new">
<label for="InvoiceItemAmount-new">Item Amount: </label>
<input id="InvoiceItemAmount-new" class="InvoiceItemAmount" type="text" value="" name="InvoiceItemAmount-new">
<input id="addInvoiceItem-1" width="25" type="image" height="25" src="/payapp/images/greenplus.th.png" alt="Add New Invoice Item" onclick="addInvoiceItemButtonPushed(this)" value="invoiceItem">
</div>
<button id="CloseInvoice-1" onclick="closeInvoice(this)" type="button">Close Invoice</button>
</form>
これが機能するようになったら、すべての入力のすべてのIDを置き換えます。同じ問題。解決策は次のようになります。
jQuery('input[id$=new]').attr('id').replace(/-new/,itemValue)
私はこれの構文をまったく理解できません。