8

HTML:

<div class="parent"> 
  <input></input> 
  <button></button> 
</div> 
<div class="siblings"> 
  <p class="children"></p> 
</div> 

jQuery:

$('button').click(function(){ 
  if($(this).siblings('input') != ""){ 
    var addTo = $(this).siblings('input').val(); 
    $(this).parent('parent').siblings('siblings').children('children').html(addTo); 
  } 
}); 

うまくいかないのはなぜですか?入力から値を取得し、の内容を置き換えたいp

4

3 に答える 3

7

クラスのセレクターを要素であるかのように参照しています (ドット: があり.ません)。おそらく、次のように変更する必要があります。

$(this).parent('.parent').siblings('.siblings').children('.children').html(addTo); 

しかし、そこには他にも奇妙なものがたくさんあり、最終的には修正する必要があります。他の人が指摘したように、if ステートメント ( if($(this).siblings('input') != ""){) は常に true と評価されます。値が空かどうかを確認しようとしていると思いますか?

これは、完全に書き直された作業中の fwiw です。

$('button').click(function(){
  var input = $(this).siblings('input'),
      val = input.val();
  if(val != ""){ 
    $(this).parent('.parent').find('.children').html(val); 
  }
}); 
于 2013-06-08T07:17:16.907 に答える
4

問題は次の行にあります。

それ以外の:

$(this).parent('parent').siblings('siblings').children('children').html(addTo);

これを試して:

$(this).parent().siblings('.siblings').find('.children').html(addTo);

それ以外の

$(this).siblings('input') != ""

これを試して:

$(this).siblings('input').val() != ""
于 2013-06-08T07:15:34.023 に答える
0

これは DOM トラバーサル (親、子、兄弟) を介して行うことができますが、ページ上で一意に識別できるように要素 ID を指定することをお勧めします。

現在のメソッドは非常に壊れやすく、ページ構造を変更すると破損しますが、ID ベースのメソッドはそうではありません。

于 2013-06-08T07:16:06.900 に答える