1

10行目がnullを返すのはなぜですか?

http://pastie.org/720484

40行目で動作します

4

6 に答える 6

2

siblings()演算子を適切に把握していないようです。また、jQueryのval()関数を使用しておらず、一部のクラス名にピリオドがありませんでした。address1クラスを見つけるには、次のことを行う必要があります。

var $checkbox = jQuery(this); 
$checkbox.parent().siblings('.formField').find('.address1');

また、アラートを

alert($checkbox.parent().siblings('.formField').find('.address1').val());

入力ボックスの値を警告します。

修正および最適化されたバージョン:

function update_address(eventObject) { 
  var $checkbox = jQuery(this);
  var $siblings = $checkbox.parent().siblings('.formField');
  if ($checkbox.attr('checked')) { 
      $siblings.find('.address1').val($('.hidden_address1').val());
      $siblings.find('.address2').val($('.hidden_address2').val());
      $siblings.find('.city').val($('.hidden_city').val());
      $siblings.find('.state').val($('.hidden_state').val());
      $siblings.find('.zip').val($('.hidden_zip').val());
      $siblings.find('.province').val($('.hidden_province').val());
      $siblings.find('.country').val($('.hidden_country').val());
  } else { 
      $siblings.find('.address1').val('');
      $siblings.find('.address2').val('');
      $siblings.find('.city').val('');
      $siblings.find('.state').val('');
      $siblings.find('.zip').val('');
      $siblings.find('.province').val('');
      $siblings.find('.country').val('');
  }    
}
于 2009-11-30T19:03:16.143 に答える
1

.val()代わりにinput:textをフェッチしてみてください

于 2009-11-30T19:01:56.507 に答える
1

9行目では、var checkbox = $(this);代わりにすべきではありませんか?jQuery()関数がそのように使用されているのを見たことがありません。

于 2009-11-30T19:03:59.033 に答える
0

<input class="address1"/>の兄弟ではないため<input id="parent_sameAsBefore"/>。私はあなたが欲しいと思います:

checkbox.parent().parent().find('.address1');
于 2009-11-30T19:03:32.047 に答える
0

絶対パスを使用してフォーム フィールドを検索しないのはなぜですか? DOM が非常に複雑でない限り (相対パスが必要な場合)、私はこのアプローチを好みます。

また、値の取得と設定には .val() を使用します。

function update_address(eventObject) { 
  if($(this).attr('checked')) { 
    $('#parent_address1').val($('hidden_address1').val()); 
    $('#parent_address2').val($('hidden_address2').val()); 
    $('#parent_city').val($('hidden_city').val()); 
    $('#parent_state').val($('hidden_state').val()); 
    $('#parent_zip').val($('hidden_zip').val()); 
    $('#parent_province').val($('hidden_province').val()); 
    $('#parent_country').val($('hidden_country').val()); 
  }    
  else { 
    $('#parent_address1').val("");  
    $('#parent_address2').val("");  
    $('#parent_city').val("");  
    $('#parent_state').val("");  
    $('#parent_zip').val("");  
    $('#parent_province').val("");  
    $('#parent_country').val("");  
  }    
}

注、15行目の元のコードのバグのようです:

checkbox.siblings('.tate').value = $('hidden_state').value; 

次のようにする必要があります。

checkbox.siblings('.state').value = $('hidden_state').value; 
于 2009-11-30T19:22:15.530 に答える
-1

alert(checkbox.siblings('.address1').html() ); // これは

alert(checkbox.parent().siblings('.address1').html() );

//チェックボックスには兄弟がありません 10行目

于 2009-11-30T19:05:02.320 に答える