1

idを使用して特定の兄弟要素の値を取得したいのですが、実行時にフォームを作成します。同じIDを持つが、部門が異なる要素が多数あります。$(this).siblings( "#BillNo")。val();を使おうとしました。$(this).prev( "#BillNo")。val(); しかし、両方とも未定義の値を返します

これは実行時のコード:手数料

<div id="bill1" class="bill hide withPadding">
    <h3>Bill 1</h3>
    <span>
    <label>Bill no</label>
    <input type="text" name="billNo" class="textField" id="BillNo"/>
    </span>
    <span>
    <label>Bill total</label>
    <input type="text" name="billTotal" class="textField" id="BillTotal"/>
    </span>
    <span>
    <input type="button" name="addBillDetails" value="Add bill items" id="addBillDetails"/>
    </span>
</div>  

<div id="bill2" class="bill hide withPadding">
    <h3>Bill 2</h3>
    <span>
    <label>Bill no</label>
    <input type="text" name="billNo" class="textField" id="BillNo"/>
    </span>
    <span>
    <label>Bill total</label>
    <input type="text" name="billTotal" class="textField" id="BillTotal"/>
    </span>
    <span>
    <input type="button" name="addBillDetails" value="Add bill items" id="addBillDetails"/>
    </span>
</div>  

<script type="text/javascript">
$(document).ready(function() {
   $("input#addBillDetails").live('click',function(){
        alert($(this).siblings("#BillNo").val());
        alert($(this).prev("#BillNo").val());

        });
}
</script>
4

4 に答える 4

7
$('#BillNo', $(this).closest("div.bill")).val()

#BillNoこれにより、親divの検索が制限されます。これがデモです。


余談ですが、HTMLを再検討する必要があります。id理想的には一意の値である必要がありますHTML4仕様から:

id =名前[CS]

この属性は、要素に名前を割り当てます。この名前は、ドキュメント内で一意である必要があります。

そしてHTML5仕様から:

id属性は、その要素の一意の識別子(ID)を指定します。値は、要素のホームサブツリー内のすべてのIDの中で一意である必要があり、少なくとも1文字が含まれている必要があります。値にはスペース文字を含めることはできません。

たとえば、クラスを使用してさまざまな入力を区別できます。それらをターゲットにするのも同じくらい簡単です。例:http: //jsfiddle.net/HxtfP/1/

または、単に省略して、ターゲティング用の属性をid使用します:http: //jsfiddle.net/HxtfP/2/name

于 2011-08-17T10:32:33.313 に答える
1

これを試してみてください、しかしそれはあまり商品コードスタイルではありません。

$(document).ready(function() {
   $("input[name='addBillDetails']").live('click',function(){
        alert(  $(this).parent().parent().find('#BillNo').val()  );
    });
});
于 2011-08-17T10:28:44.987 に答える
1

生活を楽にするために、これらのフィールドにbillNoクラスを追加し、可能であればそのクラスをセレクターとして使用することをお勧めします。

さもないと:

$('#BillNo', $(this).parents(".bill")).val()
于 2011-08-17T10:36:02.020 に答える
0

試す:

$(this).parentsUntil(".bill").find("#BillNo").val();
于 2011-08-17T10:14:54.410 に答える