3

これは本当に単純に聞こえるので、どこで立ち往生しているのかわかりません。手動で検証するフォームがあります。ラジオ ボタンが必要に応じてチェックされた後、この要素の上にラベルを取得する必要があります。ここにHTMLがあります。このコードは継承であり、より大きなプロセスの一部であるため、マークアップを変更することはできません。

これは私のHTMLです:

<label>Do you market on? : </label>
<li>
    <label>Plenty of Fish:</label>
    <span href="#" style="float:  left; margin-right: 10px;">
        <input type="radio" class="required" name="data[SignupAnswer][100][answer]" value="yes" />Yes
    </span>
    <span href="#" style="float: left; margin-right: 10px;"> 
        <input type="radio" class="required" name="data[SignupAnswer][100][answer]" value="no" />No
    </span>
    <input type="hidden" name="data[SignupAnswer][100][signup_question_id]" value="100">
    <input type="hidden" name="data[SignupAnswer][100][class]" value="bool">
    <input type="hidden" name="data[SignupAnswer][100][required]" value="0">
    <input type="hidden" name="data[SignupAnswer][100][question]" value="Plenty of Fish">
</li>

最初のラジオを見つけて、その上にある「Plenty of Fish」というラベルを見つける必要があります。

私は .prev() と .closest() の両方を ('label') で試しましたが、どちらも実際の要素を返さず、代わりにこのオブジェクトを返しました:

[prevObject: jQuery.fn.jQuery.init[1], context: <input>, selector: ".next(li)"]

要素ではなく、なぜこれが得られるのか、誰かが説明してくれるでしょうか?必要な要素を取得する方法を教えてください。ありがとう!

4

3 に答える 3

4

closest最初に最も近い親要素(セレクターで指定)を選択すると、親li要素を選択して次を見つけることができますlabel

$(this).closest('li').find('label')
于 2012-11-16T06:22:51.740 に答える
1

これが家族の時間です。.parents().children()

$('input[value=yes]').parents('li').children('label')
于 2012-11-16T06:26:05.590 に答える
1

別のアプローチ?$('input[type="radio"]:first').parent().siblings('label')

于 2012-11-16T06:39:26.593 に答える