У меня есть контент, загружаемый асинхронно на сервере, на котором работает jQuery 1.3.2
Я пытаюсь скрыть параметры во втором выборе, основываясь на значениях в первом выборе. Я смог воспроизвести мою проблему с помощью этого примера ниже.
Пример отлично работает в Firefox. В Chrome выбор B в первом выборе приведет к тому, что опции второго выбора станут пустыми. В IE скрытие опций не происходит вообще. В Safari второй выбор выберет первый вариант в том, что должно быть видимыми, но параметры, которые должны быть скрыты, все еще видны.
Это проблема в моем коде jQuery?
Это гаджет Jira для всех, кто знаком. Вот почему я использую .live("change", function())
вместо .change()
.
<html>
<body>
<div class="gadget">
<form action="localhost/promotedByTable/go">
<select id="projectId" name="projectId">
<option value="p-10100">A</option>
<option value="p-10200">B</option>
<option value="p-10300">C</option>
</select>
<select id="fixVersion" name="fixVersion">
<option value="10100-10400">1</option>
<option value="10100-10401">2</option>
<option value="10100-10402">3</option>
<option value="10100-10403">4</option>
<option value="10100-10404">5</option>
<option value="10100-10405">6</option>
<option value="10100-10406">7</option>
<option value="10100-10407">8</option>
<option value="10100-10408">9</option>
<option value="10100-10409">10</option>
<option value="10100-10410">11</option>
<option value="10100-10411">12</option>
<option value="10100-10412">13</option>
<option value="10100-10413">14</option>
<option value="10100-10414">15</option>
<option value="10100-10415">16</option>
<option value="10100-10416">17</option>
<option value="10100-10417">18</option>
<option value="10100-10418">19</option>
<option value="10100-10419">20</option>
<option value="10100-10420">21</option>
<option value="10100-10421">22</option>
<option value="10100-10422">23</option>
<option value="10100-10423">24</option>
<option value="10100-10424">25</option>
<option value="10100-10425">26</option>
<option value="10100-10426">27</option>
<option value="10100-10427">28</option>
<option value="10100-10428">29</option>
<option value="10100-10429">30</option>
<option value="10100-10430">31</option>
<option value="10100-10431">32</option>
<option value="10100-10432">33</option>
<option value="10100-10433">34</option>
<option value="10100-10434">35</option>
<option value="10100-10435">36</option>
<option value="10100-10436">37</option>
<option value="10100-10437">38</option>
<option value="10100-10438">39</option>
<option value="10100-10439">40</option>
<option value="10100-10440">41</option>
<option value="10100-10441">42</option>
<option value="10100-10442">43</option>
<option value="10100-10443">44</option>
<option value="10200-10500">1.0</option>
<option value="10200-10501">1.1</option>
<option value="10200-10502">1.2</option>
<option value="10200-10503">1.3</option>
<option value="10200-10504">1.4</option>
<option value="10200-10505">1.5</option>
<option value="10200-10506">1.6</option>
<option value="10200-10507">1.7</option>
<option value="10200-10508">1.8</option>
<option value="10200-10509">1.9</option>
<option value="10200-10510">1.10</option>
<option value="10200-10511">1.11</option>
<option value="10200-10512">1.12</option>
<option value="10200-10513">1.13</option>
<option value="10200-10514">1.14</option>
<option value="10200-10515">1.15</option>
<option value="10200-10516">1.16</option>
<option value="10200-10517">1.17</option>
<option value="10200-10518">1.18</option>
<option value="10200-10519">1.19</option>
<option value="10200-10520">1.20</option>
<option value="10200-10521">1.21</option>
<option value="10200-10522">1.22</option>
<option value="10200-10523">1.23</option>
<option value="10200-10524">1.24</option>
<option value="10200-10525">1.25</option>
<option value="10200-10526">1.26</option>
<option value="10200-10527">1.27</option>
<option value="10200-10528">1.28</option>
<option value="10200-10529">1.29</option>
<option value="10200-10530">1.30</option>
<option value="10200-10531">1.31</option>
<option value="10200-10532">1.32</option>
<option value="10200-10533">1.33</option>
<option value="10200-10534">1.34</option>
<option value="10200-10535">1.35</option>
<option value="10200-10536">1.36</option>
<option value="10200-10537">1.37</option>
<option value="10200-10538">1.38</option>
<option value="10200-10539">1.39</option>
<option value="10200-10540">1.40</option>
<option value="10200-10541">1.41</option>
<option value="10300-10600">3.1</option>
<option value="10300-10601">3.4</option>
<option value="10300-10602">3.7</option>
<option value="10300-10603">4</option>
<option value="10300-10604">4.3</option>
<option value="10300-10605">4.6</option>
<option value="10300-10606">4.9</option>
<option value="10300-10607">5.2</option>
<option value="10300-10608">5.5</option>
<option value="10300-10609">5.8</option>
<option value="10300-10610">6.1</option>
<option value="10300-10611">6.4</option>
<option value="10300-10612">6.7</option>
<option value="10300-10613">7</option>
<option value="10300-10614">7.3</option>
<option value="10300-10615">7.6</option>
<option value="10300-10616">7.9</option>
<option value="10300-10617">8.2</option>
<option value="10300-10618">8.5</option>
<option value="10300-10619">8.8</option>
<option value="10300-10620">9.1</option>
<option value="10300-10621">9.4</option>
<option value="10300-10622">9.7</option>
<option value="10300-10623">10</option>
<option value="10300-10624">10.3</option>
<option value="10300-10625">10.6</option>
<option value="10300-10626">10.9</option>
<option value="10300-10627">11.2</option>
<option value="10300-10628">11.5</option>
<option value="10300-10629">11.8</option>
</select>
</form>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(function() {
jQuery("form[action*='/promotedByTable/'] #projectId").live("change", function() {
var projSelect = jQuery(this);
var fixVersion = projSelect.closest("div.gadget").find("#fixVersion");
var firstVisible;
fixVersion.find("option").each(function() {
var option = jQuery(this);
var show = option.attr("value").split("-")[0] == projSelect.val().split("-")[1];
option.toggle(show);
if(show && !firstVisible) {
firstVisible = option;
}
});
var none = fixVersion.find("option#no-versions");
if(firstVisible) {
none.remove();
fixVersion.val(firstVisible.attr("value"));
}
else if(none.length) {
none.show();
fixVersion.append(none).val(none.text());
}
else {
none = jQuery("<option id='no-versions'>(Select a project with versions)</option>");
fixVersion.append(none).val(none.text());
}
});
});
</script>
</body>
</html>