#jquery #css #onchange #addclass #removeclass
#jquery #css #onchange #addclass #removeclass
Вопрос:
Я пытаюсь заставить addClass и removeClass jQuery работать в среде выбора формы с небольшим успехом.
Я хочу изменить класс родительского div и пытался передать идентификатор в функции, но все мои попытки были тщетными. Любые указания и помощь будут высоко оценены.
<div id="MaxAge" class="SearchFormStyle">
<select name="maxage" onchange="addClass(MaxAge);">
<option value="0">Age</option>
<option value="1" >1 Year Old</option>
<option value="2" >2 Years Old</option>
</select>
<span class="ThisValue">
<a href="#" onclick="RemoveClass(MaxAge)">VALUE ENTERED HERE</a>
</span>
</div>
<script>
function addClass (id) {
div = "#" id;
$(div).addClass("InputSet");
}
function RemoveClass (id) {
div = "#" id;
$(div).removeClass("InputSet");
}
</script>
Комментарии:
1. Я не совсем понимаю, каков именно желаемый эффект?
2. Пример эффекта: autotrader.co.uk В поиске автомобиля выберите максимальную цену, чтобы увидеть эффект.
Ответ №1:
addClass(MaxAge)
будет передаваться значение переменной MaxAge
addClass
, а не строка 'MaxAge'
.
Кроме того, вам действительно следует использовать jQuery для привязки обработчиков событий вместо встроенных обработчиков событий:
$("select[name='maxage']").change(function() {
addClass('MaxAge');
});
$('.ThisValue a').click(function(event) {
RemoveClass('MaxAge');
event.preventDefault();
});
Чтобы узнать больше об обработчиках событий, я рекомендую прочитать статьи по адресу quirksmode.org .
Существуют и другие проблемы, такие как div
переменная in addClass
и RemoveClass
глобальная. Не забывайте var
, когда вы объявляете переменные. Также именование функции несовместимо add
Remove
с .
Руководство по MDN JavaScript очень полезно для изучения основ JavaScript.
Ответ №2:
вы почти делаете это правильно. Вот что я бы сделал (с некоторыми комментариями для вас)
// onchange event of the selectbox with id = maxage
$("#maxage").change(function() {
$("#MaxAge").addClass("InputSet");
});
// the click event for the a element within span with class ThisValue
$("span.ThisValue a").click(function(e) {
// prevent doing default behaviour like going to another location...
e.preventDefault();
$("#MaxAge").removeClass("InputSet");
});
Комментарии:
1. В форме, которую я имею, около 10 select, поэтому было бы проще иметь одну функцию, которая может обрабатывать все select, а не функцию для каждого идентификатора элемента. Надеюсь, это имеет смысл?
Ответ №3:
Вы никогда не создаете экземпляр переменной div.
Попробуйте это:
var div = "#" id;
Комментарии:
1. Спасибо, но это не имело никакого эффекта