2012-12-24 35 views
5

tôi là tạo ra một hộp kiểm tùy chỉnh với css này:: kiểm tra lớp giả không hoạt động trong Chrome

input[type="checkbox"] { 
    background: transparent; 
    border: inherit; 
    width: auto; 
} 
input[type=checkbox] { 
    display: none; 
} 
input[type=checkbox] + input + label, 
input[type=checkbox] + label, 
div:not(#foo) > input[type=checkbox] + label, 
div:not(#foo) > input[type=checkbox] + input + label { 
    cursor: pointer; 
    height: 16px; 
    padding: 0 0 0 18px; 
    background: transparent url(/assets/images/checkbox-unchecked.png) no-repeat left 3px; 
} 
input[type=checkbox]:checked + input + label, 
input[type=checkbox]:checked + label, 
div:not(#foo) > input[type=checkbox]:checked + label, 
div:not(#foo) > input[type=checkbox]:checked + input + label { 
    background: transparent url(/assets/images/checkbox-checked.png) no-repeat left 3px; 
} 
.ie6 input[type=checkbox], 
.ie7 input[type=checkbox], 
.ie8 input[type=checkbox] { 
    display: inline-block; 
    *display: inline; 
    *zoom: 1; 
} 

và đây là đánh dấu html của tôi:

<div class="editor-label"> 
    <input class="check-box" data-val="true" id="Persistent" name="Persistent" type="checkbox" value="true" /> 
    <input name="Persistent" type="hidden" value="false" /> 
    <label for="Persistent">Keep me!</label> 
</div> 

Các yếu tố input được tạo ra bởi @Html.EditorFor(model => model.BooleanProp) trong Razor. Mã này hoạt động tốt ngoại trừ trong Chrome. Trên thực tế trong Chrome, khi chúng ta nhấp vào hộp kiểm, chúng ta sẽ thấy hiệu ứng (bằng hiệu ứng tôi có nghĩa là thay đổi hình nền cho nhãn cho thấy hộp kiểm được chọn hay không) sau khi chúng tôi nhấp vào gửi bottun. Bất kỳ ý tưởng xin vui lòng?

CẬP NHẬT

Đây là một demo

+0

Bạn có [bản demo đơn giản] (http://jsfiddle.net/) chúng ta có thể thấy rằng tái tạo vấn đề của bạn? –

Trả lời

6

Tôi tin rằng Webkit có vấn đề với xích + selectors rằng theo selectors giả

Swap các xích ... + input + label selectors cho ... ~ label.

Ví dụ:

div:not(#foo) > input[type=checkbox] ~ label 
+1

bạn hoàn toàn đúng. Nó hoạt động. Cảm ơn bạn rất nhiều. –

+0

không hoạt động cho tôi !! – Mak

+0

@Mak không thực sự là một nhận xét hữu ích. Bạn có thể cung cấp một [JSFiddle] (http://jsfiddle.net/) chứng minh điều này không hoạt động –

Các vấn đề liên quan