Javascript 用jQuery替换字段

Javascript 用jQuery替换字段,javascript,jquery,html,siblings,Javascript,Jquery,Html,Siblings,为什么第10行返回空值 它适用于第40行尝试获取输入:文本的.val()而不是您似乎没有正确地掌握同级()运算符。您还没有使用jQuery的val()函数,并且在某些类名上缺少句点。要定位address1类,您需要执行以下操作: var $checkbox = jQuery(this); $checkbox.parent().siblings('.formField').find('.address1'); 此外,您还希望警报 alert($checkbox.parent().siblin

为什么第10行返回空值


它适用于第40行

尝试获取输入:文本的
.val()
而不是您似乎没有正确地掌握同级()运算符。您还没有使用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('');
  }    
}
因为
不是
的兄弟姐妹。我想你想要:

checkbox.parent().parent().find('.address1');

在第9行,它不应该是
var checkbox=$(这个)而不是?我没有见过像这样使用jQuery()函数。

警报(checkbox.sibbins('.address1').html());//这应该是

警报(checkbox.parent()同级('.address1').html())


//复选框没有同级
第10行

为什么不直接使用绝对路径查找表单字段呢? 除非您的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行的原始代码中似乎有一个bug:

checkbox.siblings('.tate').value = $('hidden_state').value; 
应该是:

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

可能在
noConflict
模式下使用jQuery,这里有更多信息:您确实知道$==jQuery?
元素应该是空的。在HTML中,您不必显式地关闭它们,但在XHTML中,您需要“自我关闭”它们。i、 谢谢你的观察。他正试图得到他的兄弟姐妹。他将获得null,因为复选框没有同级。这是一个好主意,是的,但与同级()函数找不到任何内容无关。如果noConflict模式有效,只需在上面的代码中将$替换为jQuery就更好了,但错误是状态中缺少的's:)我不认为
o1.val()=o2.val()
将更改o1。好的,看看JQuery网站,新值应该是一个参数,如下所示:
checkbox.sippines('.state').val($('hidden_state').val())
checkbox第10行没有同级