Порядок оценки неуточнен, см. http://en.wikipedia.org/wiki/Sequence_point
Это та же ситуация, что и пример с примером оператора + :
Рассмотрим две функции
blockquote >f()
иg()
. В C и C ++ оператор+
не связан с точкой последовательности, и поэтому в выраженииf()+g()
возможно, что либоf()
, либоg()
будут выполнены в первую очередь.
Вам нужно внести несколько исправлений:
$("#TypeOfAd_Auktion")
//should be:
$("#ModelViewAd\\.TypeOfAd_Auktion")
$(this).checked
//should be:
this.checked
$("#ModelViewAd.TypeOfAd_Ad")
//should be:
$("#ModelViewAd\\.TypeOfAd_Ad")
И это:
$("divEndDate")
//should be:
$("#divEndDate")
При использовании .
в идентификаторе, его необходимо экранировать, чтобы он не рассматривался как класс, например: \\.
Кроме того, если вам не нужна видимость
для занятия места на странице, даже когда она скрыта, используйте вместо этого display
, тогда вы можете сократить код до следующего:
$("#ModelViewAd\\.TypeOfAd :radio").change(function () {
$("#divEndDate").toggle(this.checked && this.value == 'Ad');
});
Вы можете просмотреть демо здесь , это не включает никаких изменений в ваш HTML, только скрипт.
попробуйте следующее
$(document).ready(function () {
$('input:radio[name="ModelViewAd.TypeOfAd.SelectedValue"]').click(function() {
this.id == 'ModelViewAd.TypeOfAd_Ad'?
$("#divEndDate").show() : $("#divEndDate").hide();
});
});
Мы привязываем один и тот же обработчик событий щелчка к обоим входам радио, а затем проверяем идентификатор внутри функции. В зависимости от этого значения id мы либо показываем, либо скрываем