【问题标题】:jQuery div click post hide not working properly in IE8jQuery div click post hide 在 IE8 中无法正常工作
【发布时间】:2011-11-21 11:37:12
【问题描述】:

我在页面上有一个使用 javascript 创建的 div 元素列表,其格式如下:

<div id="UniqueID" class="request">
    <div class="request_main"></div> //VISIBLE
    <div class="request_info"></div> //HIDDEN
</div>

点击div 时,jQuery 点击监听器处理request_main 元素上的点击事件,并在父div 中搜索request_info div。然后它会显示request_info div(如果它尚不可见)。

$(".request_main").live('click', function() {       
    $(".nrl").removeClass('blue').addClass('grey');                 
    if ($(this).parent().find(".request_info").css('display') == 'none') {
        $(".request_info").hide();  
        $(this).parent().find(".request_info").stop(false,true).show("slide", {direction:"up"}, 300, function(){});
        $(this).find(".nrl").removeClass('grey').addClass('blue');
        $(".links").removeClass('white').addClass('grey');
        $(".links").css('background-color','white');
        $(this).find(".links").removeClass('grey').addClass('white');
        $(this).find(".links").css('background-color','#1B75BB');
    }           
});

在 Firefox、Safari、Chrome 甚至 IE9 中都可以正常工作。然而,在 IE8 中,该功能仅适用于之前未点击过的 div,例如点击UniqueID_1 -> request_info 显示。点击UniqueID_2 -> request_info 显示。再次点击UniqueID_1 -> 没有任何反应。

alert($(this).parent().find(".request_info").css('display'));

此语句在使用工作浏览器的每次点击时返回noneblock。在 IE8 中,这将第一次返回 noneblock,然后返回 undefined(单击同一个 div 时)。即使我在 show 和 hide 调用之后将函数中 div 的值显式设置为 noneblock,也会发生这种情况。

【问题讨论】:

标签: jquery html internet-explorer-8 show-hide


【解决方案1】:

试试下面的代码:

$(".request_main").live('click', function(e) {
  e.stopPropagation();
});

【讨论】:

  • 非常感谢,这似乎已经对它进行了排序,并帮助解决了许多其他问题!克里斯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 2013-12-01
  • 2010-11-27
相关资源
最近更新 更多