1

为什么第 10 行返回 null?

http://pastie.org/720484

它适用于第 40 行

4

6 回答 6

2

您似乎没有正确掌握 Brothers() 运算符。您也没有使用 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()文本

于 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 回答