2012-06-25 4 views
5

Мне нужен этот скрипт, чтобы скрыть мои флажки и поставить вместо него образ стилизованного флажка. Он правильно скрывает его и показывает изображение по умолчанию, но он не будет обновлять флажок, чтобы отмечать или снимать флажок, когда я нажимаю на него, и не обновлять изображение. Я предполагаю, что это простая вещь, которую я пропускаю, я все еще новичок в jQuery.jQuery - Стиль checkbox, заменить на картинку

Вот сценарий:

 $(".check").each(function() { 
      $(this).hide(); 

      var $image = $("<img src='assets/images/layout/checkbox/unchecked.png' />").insertAfter(this);  

      $image.click(function() { 
       var $checkbox = $(this).prev(".check"); 
       $checkbox.prop('checked', !$checkbox.prop('checked')); 

       if($checkbox.prop("checked")) { 
        $image.attr("src", "assets/images/layout/checkbox/checked.png"); 
       } else { 
        $image.attr("src", "assets/images/layout/checkbox/unchecked.png"); 
       } 
      }) 
     }); 

Вот HTML:

<input type="checkbox" class="check" /> 

Edit: Кроме того, это вообще лучший подход к стилизации флажков? Я не могу найти ничего, что намного проще, чем это, поэтому любые предложения приветствуются.

+0

Должно работать нормально: http://jsfiddle.net/SaEYH/. – VisioN

+1

BTW: '$ ('. Check')' == '$ ('input [type = checkbox]')', поэтому нет необходимости устанавливать классы для jQuery. – feeela

+0

Я удалил все другие скрипты jQuery на странице, и он все еще не работает, какие-либо идеи относительно того, что я могу делать неправильно? – ohiock

ответ

2

Оказалось, что я использую устаревшую версию jQuery, которая была проблемой. Я обновился до 1.7.2, и все сработало так, как должно.

+0

Нет изменений в источнике в вашем примере? версия, которая сработала? – CrackerJack9

+0

Исходный код работает так, как он выглядит здесь. Версия, которая работала, была 1,7,2, но я не знаю, что было до этого. – ohiock

0

Вы также можете использовать этот плагин jQuery под названием Zebra_Transform, который преобразует все флажки, переключатели и поля выбора на странице, он очень мал (3 КБ) и работает во всех основных браузерах.

0

Знайте, что это более старая тема, но для решения проблемы нужно было преобразовать флажки в изображения - и это был лучший ответ. :) Так что реорганизовали его и хотели поделиться.

function setCheckboxImageSrc(checkbox, image, checkedUrl, uncheckedUrl) { 
    if (checkbox.is(":checked")) { 
     image.attr("src", checkedUrl); 
    } else { 
     image.attr("src", uncheckedUrl); 
    } 
} 

function setCheckboxImage(checkboxObj, className, checkedUrl, uncheckedUrl) { 
    checkboxObj.hide(); 

    var $image = $("<img src='" + checkedUrl + "' />").insertAfter(checkboxObj); 
    setCheckboxImageSrc(checkboxObj, $image, checkedUrl, uncheckedUrl); 

    $image.click(function() { 
     var $checkbox = $image.prev("." + className); 
     $checkbox.click(); 
     setCheckboxImageSrc($checkbox, $image, checkedUrl, uncheckedUrl); 
    }); 
} 

$(".checkboxUp").each(function() { 
    setCheckboxImage($(this), "checkboxUp", "../../../images/DirectionUpChecked.png", "../../../images/DirectionUpUnchecked.png"); 
}); 

$(".checkboxDown").each(function() { 
    setCheckboxImage($(this), "checkboxDown", "../../../images/DirectionDownChecked.png", "../../../images/DirectionDownUnchecked.png"); 
}); 
Смежные вопросы