2011-05-18 49 views
5

jQuery attr()在更改时不更新其值。这里是我下面的代码:jQuery attr()在更改时不会更新它的值

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
<script type="text/javascript" src="jquery-1.6.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    var Religion = $("#Religion"), 
     SelectCaste = $("#SelectCaste"), 
     Hindu = $("#Hindu"), 
     Muslim = $("#Muslim"), 
     Christian = $("#Christian"); 

     Religion.change(function(){ 
     var sReligion = $(this).val(); 
     SelectCaste.hide().attr('name', ''); 
     Hindu.hide().attr('name', ''); 
     Muslim.hide().attr('name', ''); 
     Christian.hide().attr('name', ''); 
     if(sReligion=="1") { 
       Hindu.show(); 
       Hindu.attr('name','Caste'); 
      } 
      else if(sReligion=="2") { 
       Muslim.show(); 
       Muslim.attr('name','Caste'); 
      } 
      else if(sReligion=="3") { 
       Christian.show(); 
       Christian.attr('name','Caste'); 
      } 
    }); 
}); 
</script> 
</head> 

<body> 
<table cellpadding="0" cellspacing="0" width="100%"> 
<tr> 
    <td>Religion</td> 
    <td> 
     <select class="FormInput" name="Religion" id="Religion"> 
      <option selected="selected" label="Select" value="">- Select Religion -</option> 
      <option label="Hindu" value="1">Hindu</option> 
      <option label="Muslim" value="2">Muslim</option> 
      <option label="Christian" value="3">Christian</option> 
     </select> 
    </td> 
</tr> 
<tr> 
    <td>Caste</td> 
    <td> 
     <select class="FormInput" id="SelectCaste" disabled="disabled"> 
      <option value="" selected="selected">- Select Caste -</option> 
     </select> 
     <div id="CasteList"> 
     <select class="FormInput" id="Hindu" style="display:none"> 
      <option value="" selected="selected">- Select Caste -</option> 
      <option value="1">Ad Dharmi</option> 
      <option value="2">Adi Dravida</option> 
      <option value="3">Aggarwal</option> 
      <option value="4">Agri</option> 
      <option value="5">Ahom</option> 
      <option value="6">Ambalavasi</option> 
      <option value="7">Arora</option> 
      <option value="8">Arunthathiyar</option> 
      <option value="9">Arya Vysya</option> 
      <option value="10">Others</option> 
     </select> 
     <select class="FormInput" id="Muslim" style="display:none"> 
      <option value="" selected="selected">- Select -</option> 
      <option value="328">Ehle Hadith</option> 
      <option value="329">Gulf Muslims</option> 
      <option value="330">Memon</option> 
      <option value="331">Ansari</option> 
      <option value="332">Arain</option> 
      <option value="333">Awan</option> 
      <option value="334">Bengali</option> 
      <option value="357">Others</option> 
     </select> 
     <select class="FormInput" id="Christian" style="display:none"> 
      <option value="" selected="selected">- Select -</option> 
      <option value="358">Born Again</option> 
      <option value="359">Bretheren</option> 
      <option value="360">CMS</option> 
      <option value="361">CNI</option> 
      <option value="362">CSI</option> 
      <option value="363">Catholic</option> 
      <option value="364">Roman Catholic</option> 
      <option value="365">Evangelical</option> 
      <option value="376">Others</option> 
     </select> 
     </div> 
    </td> 
</tr> 
</table> 
</body> 
</html> 

在改变“宗教”选择框,其他的下拉框(印度/穆斯林/基督徒)不成立属性名=“种姓”。

请协助我解决问题。

谢谢。

回答

1

这似乎是工作:http://jsfiddle.net/qWasX/1/

你确定你有与你的脚本的问题?

+0

@Henry Garle:即使在你提供的链接中它也不工作。用萤火虫检查可见的下拉元素。名称属性对于可见的下拉列表是空的。 – prajan 2011-05-18 09:29:35

+0

请看这里的截图:[链接](http://i51.tinypic.com/2q2pixe.gif)。我正在使用Firefox 3.6.17。 – prajan 2011-05-18 10:27:30

+0

这就是我的观点,它对我来说非常合适。让我得到一个截图。 – Henry 2011-05-18 10:32:22

3

从jQuery 1.6+开始.attr()引用HTML属性和初始设置,.prop()引用DOM属性(你想要的)。

查看1.6.1 update post了解更多详细信息,而SO question可获得更多信息。

这是一个jsfiddle,所有attrpropjsfiddle

+0

你的权利,但作为一个注意.attr()也已完全向后兼容,所以虽然你应该使用.prop(),.attr()编写新的脚本应该工作完全一样。 – Henry 2011-05-18 09:12:26

+0

现在在1.6.1中使用'.attr()'似乎可以正常工作,但是他们被迫使用1.6.0(无论出于何种原因),并且只是为了熟悉它们之间的区别案例jQuery永远不会打破向后兼容性。 – WSkid 2011-05-18 09:20:42

+0

@WSKid:用FIREBUG检查可见的下拉元素(印度教/穆斯林/基督徒)。名称属性具有空值。 – prajan 2011-05-18 09:33:00