jQuery добавление / удаление атрибута и класса

#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. Думаю, теперь я понимаю, в чем проблема. Вы нажимаете на флажок, и он выделяет карту, но не устанавливает флажок до второго щелчка справа?