2017-04-11 6 views
-4

で次の兄弟を返しません。これは私のHTMLで次のjQueryの()クラス

</label> 
    <input type="checkbox" id="ServiceLocationActive" name="ServiceLocationActive" checked="" value="false"> 
    <span class="toggle"></span> 
    <span class="toggle-text">Active</span> 
<label> 

この問題は、次は何も返さないということである私のJavaScriptの

$('#ServiceLocationActive').on('change', function(){ 
    if ($(this).is(':checked')) 
     $(this).next('.toggle-text').html('Active'); 
    else 
     $(this).next('.toggle-text').html('Inactive'); 
}); 

です。 .next()のみを使用しようとすると最初のスパンが得られますが、.next('.toggle-text')を使用しても何も得られません。さらに不条理なのは、もし私がnext().next()を使うなら、私が望む償還金を得るでしょう。

ここで何が起こっているか

+1

を使用することができます:' [ 'nextAll()']を使用し、直後にsibling'を取得(HTTPS://api.jqueryを。 (https://api.jquery.com/siblings/) – empiric

+2

[next()api docs](http:// api)を読んでこれに答えることができましたか? .jquery.com/next /) – charlietfl

+1

jQueryメソッドが期待したことをしていない場合は、そのメソッドのドキュメントを(通常のJavaScriptメソッドや関数と同様に)見てください。ほとんどの場合、あなたが期待したものではない。 –

答えて

1

.next()は、兄弟の直後に戻り、要素.toggleではなく、.toggle-text要素です。

あなたはnext`が動作するように意図された方法 `まさに.siblings()

$(this).siblings('.toggle-text')