在浏览器中强制刷新部分页面

时间:2010-05-20 18:30:32

标签: javascript jquery html

我有以下html:

<ul class="scr">
    <li class="scr">
        <input type="checkbox" class="chkscr"/>
        <h3>Item Name</h3>
        <div class="scr">Contents</div>
    </li>
    ....
</ul>

以下jQuery:

//Set initial state of each scr section
$('.chkscr input, input.chkscr').each(function() {
    chkSCR_Click($(this));
});

//Setup click event
$('.chkscr input, input.chkscr').click(function() {
    chkSCR_Click($(this));
});

//Toggle corresponding scr section for the checkbox
function chkSCR_Click(ctl) {
    if (ctl.attr('checked')) {
        ctl.parents('li.scr').find('div.scr').stop().show();
    }
    else {
        ctl.parents('li.scr').find('div.scr').stop().hide();
    }
}

我的问题是,当我切换要显示的最后一个li元素时,h3元素内容会消失,直到我单击页面上的其他位置,或者向上和向下滚动页面以使浏览重绘窗口的那一部分。我在Opera中没有这种行为,例如,即使在IE中,行为也只发生在最后一个li元素上,所以我很确定这是一个IE怪癖,而不是我的代码。我可以通过jquery / javascript强制它重绘h3元素吗?

1 个答案:

答案 0 :(得分:0)

我无法复制。我有点重构了你的代码:

//Set initial state of each scr section
$('input.chkscr').each(function() {
    chkSCR_Click($(this));
});

//Setup click event
$('input.chkscr').click(function() {
    chkSCR_Click($(this));
});

//Toggle corresponding scr section for the checkbox
function chkSCR_Click(ctl) {
    if (ctl.attr('checked')) {
        ctl.siblings('div.scr').stop().show();
    }
    else {
        ctl.siblings('div.scr').stop().hide();
    }
}​

并在这里设置了一个小提琴:http://jsfiddle.net/4KxHm/但我的想法是(我可能错了)在你的实际标记中有一个开启的地方。