这里的挑战是,为了通过 javascript 访问 DOM 元素,DOM 元素必须已经被浏览器解析,并且一旦被浏览器解析,它可能已经显示在屏幕上,除非它被设置为不可见。
这里最好的答案是通过 CSS 样式控制初始外观,因为这将在项目被解析时生效,并且它的第一个显示将包含 CSS 样式。
在给定对象上运行 javascript 的最快方法是将内联 javascript 放在 HTML 源代码中的元素之后:
<input id="htmlEdit" type="checkbox"/>
<script type="text/javascript>
$('#htmlEdit').wijcheckbox();
</script>
但是,如果您必须经常这样做,这会很快变得混乱,并且散布您的标记和 JS 通常不是一个好主意。
所以,如果你不能用 CSS 设置它的样式,那么你最好先隐藏对象,然后在 JS 设置它的样式后才显示它。
<input id="htmlEdit" type="checkbox" style="visibility: hidden" />
并且,在你适当地设置它的样式后,让它在你的 JS 中可见:
$(document).ready(function() {
$('#htmlEdit').wijcheckbox().css("visibility", "visible");
})
注意:我visibility: hidden
在这里使用而不是display: none
因为您的页面将正确布局,并且当复选框变得可见时,页面不会重新布局,导致事情跳来跳去。这似乎比在没有复选框的情况下查看布局更可取,然后在复选框变得可见时看到它重新定位。如果新的复选框样式显着不同,当您添加新样式时它仍然可能会发生一些变化,但在使用可见性时不会那么显着。
如果你有一堆这样的,你可以用一个类使它自动化:
<input class="styledCheckbox" id="htmlEdit" type="checkbox">
CSS:
/* initially hidden until wij style is applied */
.styledCheckbox {visibility: hidden;}
Javascript:
$(document).ready(function() {
// add style to all checkboxes and make them visible
$('.styledCheckbox').wijcheckbox().css("visibility", "visible");
})