#jquery #css #drop-down-menu
#jquery #css #выпадающее меню
Вопрос:
Я работаю над интерактивной картой поиска, в которой используются карты изображений, спрайты переноса и поля выбора ввода!
Вы можете увидеть мой рабочий пример здесьhttp://jsfiddle.net/mediacake/FxS6j
Проблема, с которой я сталкиваюсь при попытке перейти по ссылке выше, заключается в том, что я также использую jQuery jqtransform для оформления элементов формы.. что добавляет дополнительную сложность… хорошо для меня! Чтобы знать, как устанавливать и снимать флажки с поля выбора и его нового элемента styles, созданного jqtransform!
У меня почти получилось, но есть несколько ошибок, которые мне трудно исправить!
Надеюсь, у кого-нибудь есть идея, как сделать правильно?
Комментарии:
1. С чем именно у вас возникли проблемы? Вы пытаетесь скрыть флажки по умолчанию и показывать только те, которые оформлены?
2. Исходные элементы должны быть скрыты с помощью
.jqTransformHidden
, но это переопределяется{display:inline;}
Что ж, давайте посмотрим, с чем вернется Дэниел.3. вы изучали последние методы jQuery (версия v1.6) jQuery.prop и jQuery.removeProp . это может вам помочь..
4. привет, я показываю флажки только для тестирования, чтобы убедиться, что они проверяются, если выбрана область карты.
5. Я все еще новичок в Jquery! здесь не хватает нескольких вещей … 1. наведение курсора мыши на метки показывает относительную площадь на карте. 2. щелкните область карты, установите флажок и установите флажок. 3. нажмите «Выбрать область карты» еще раз, снимите оба флажка и галочку, и 2,3 будет таким же, если вы нажмете на карту с галочкой, установите флажок. как это помогает??
Ответ №1:
Хорошо, после многих правок, я думаю, мы, наконец, перейдем к решению здесь. jsFiddle
$(function() {
$('form').jqTransform({
imgPath: 'img/'
});
//Better to cache these selectors if we are using them more than once
var jqCheckbox = $('.jqTransformCheckbox');
var maps = $('#map-container AREA');
//Unbind the default behaviour set by jqTransform because it was causing double events
jqCheckbox.unbind('click');
//Rebind it with our modified behaviour
jqCheckbox.click(function(evt) {
var jqTrans = $(this).toggleClass('jqTransformChecked');
//It would be faster to use an id selectors #id instead of a class selectors .id here
var checkbox = jqTrans.next('input[type=checkbox]');
$('.' checkbox.prop('id') '-map').toggleClass('selected'); // img select
checkbox.prop('checked', !checkbox.prop('checked'));
});
maps.click(function(evt) {
evt.preventDefault();
var id = $(this).prop('id');
$('.' id '-map').toggleClass('selected'); // img select
$('.' id '-link').toggleClass('jqTransformChecked'); // a. tickbox
//Limit to checkboxes because map share same id
var checkbox = $('input[type=checkbox][id=' id ']');
checkbox.prop('checked', !checkbox.prop('checked'));
});
maps.hover(function(evt) {
$('.' $(this).prop('id') '-map-hover').toggleClass('selected'); // img hover
//Uncomment if you want tickbox selected
//$('.' $(this).prop('id') '-link').toggleClass('jqTransformHover') // checkbox
});
//Replace with .srow
//Better to use id selector here i.e. div id=srow
$('.form-row label').hover(function(evt) {
var id = $(this).find('input').prop('id');
$('.' id '-map-hover').toggleClass('selected'); // img hover
//Uncomment if you want tickbox selected
// $('.' id '-link').toggleClass('jqTransformHover') // checkbox
});
$('.form-row input[type=checkbox]').change(function(evt) {
var map = $('.' $(this).attr('id') '-map'); // img select
map.toggleClass('selected');
});
});
Комментарии:
1. не беспокойтесь о том, как это выглядит! причина, по которой я получил окно выбора, заключается в том, что я вижу, что они выбираются!! я не зациклен на стилизации только действий..
2. если вы нажмете на область карты, она выделит эту область, а также установит флажок, но мне это нужно, чтобы также было выбрано поле выбора! вот почему я их получил showing…in конечная версия позволяет скрыть их снова. Теперь, если вы нажмете на галочку, будет выделена область карты, а также поле выбора!
3. спасибо, но у вас все та же проблема, что и у меня! если вы нажмете на галочку, ничего не произойдет! когда вы нажимаете на флажок, он должен сделать флажок установленным, а также карту выбранной точно так же, как это происходит, если вы нажимаете на карту
4. Какой веб-браузер вы используете?
5. Думаю, теперь я понимаю, в чем проблема. Вы нажимаете на флажок, и он выделяет карту, но не устанавливает флажок до второго щелчка справа?