1

我正在尝试部分重置字段(选择和文本框)。这是我到目前为止所拥有的:

var $inputs = $('#StudentTable :select');
$inputs.each(function () { 
  if ($(this).name = "TeachingAsstSelect") { 
    $('select[name="TeachingAsstSelect"]').each(function () { 
      $(this).text(""); 
    }) 
  } 
  else { 
    $(this).val("Select");
  } 
});

此处“TeachingAsstSelect”被清除,但其他选择未重置。我错过了什么吗?更重要的是,我做得对吗?

4

2 回答 2

1

对于 jQuery 对象,您应该使用attr()方法,name它是 DOM 元素属性之一。

改变这个:

  if ($(this).name = "TeachingAsstSelect") { 

到:

  if ($(this).attr('name') == "TeachingAsstSelect") { 

另请注意,您应该使用 ==运算符进行比较,目前您正在设置值。

于 2012-07-31T16:54:14.283 回答
1

如果您尝试测试字符串的相等性,您应该使用==or ===。请参阅此处的更多信息:JavaScript 比较中应该使用哪个等号运算符(== vs ===)?

另外,正如@Raminson 建议的那样,请尝试改用该attr()方法。

if ($(this).attr('name') == "TeachingAsstSelect") { 

或者更好的是,像这样嵌套.each()两次可能不如其他解决方案好。

我还注意到您正在测试 name 在您的if条件下,然后使用 jquery 选择器再次匹配[name="TeachingAsstSelect"]. 像这样简化怎么样:

var $teachingAsstInputs = $('#StudentTable :select[name="TeachingAsstSelect"]');
$($teachingAsstInputs).text(""); 

var $otherInputs = $('#StudentTable :select').not('[name="TeachingAsstSelect"]');
$($otherInputs).val("Select"); 
于 2012-07-31T17:02:24.197 回答