jquery 在 Internet Explorer 中使用多个选择器

Posted

技术标签:

【中文标题】jquery 在 Internet Explorer 中使用多个选择器【英文标题】:jquery using multiple selectors in Internet Explorer 【发布时间】:2014-06-24 09:32:02 【问题描述】:

我遇到了一个奇怪的情况。 我最近对 ​​jquery 进行了更多研究,并更新了一些旧代码。

我没有在 html 标记中使用 onClick,而是将其更改为

$(document).ready(
    function () 
        $('#top_menu, :button, .big').on('click', 
            function () 
                window.open($(this).data('link'), '_self', ''); 
            
        );
    
);

并且 IE 没有在鼠标点击时重定向。而是如果去地址http://mylocaladdress/mysubdir/undefined

在经历了很多挫折和玩耍之后,我改变了 $('#top_menu, :button, .big')$('#top_menu :button, .big'),它就像一个魅力。

谁能解释一下?

【问题讨论】:

按钮是否在#top_menu元素中?问题可能是由于事件传播 @ArunPJohny 可能是这样,但是第一个如何变得不工作而第二个工作......? 对于#top_menu$(this).data('link') 将返回未定义,我想 @RajaprabhuAravindasamy 因为#top_menu 可能没有数据属性link 在真正看到 HTML 之前,它的完整猜测工作。你能发布一些相关的HTML吗? 【参考方案1】:

:S 完全的菜鸟错误。 在代码更改期间,我出于某种原因丢失了菜单表中的 id

    <table cellpadding="0" cellspacing = "0" id="#top_menu">
           <tr>
            <td><button class="big" style="font-weight: bold;" nowrap data-link="[action]">[name]</button></td>
...
           </tr>
    </table>

很抱歉给您带来麻烦。

实际上有趣的是它在 Chrome 中运行良好

【讨论】:

【参考方案2】:

我认为这是$(this).data('link') 的问题,所以请尝试使用$(this).attr('data-link') 而不是$(this).data('link')

$(document).ready(
    function () 
        $('#top_menu, :button, .big').on('click', 
            function () 
                window.open($(this).attr('data-link'), '_self', ''); 
            
        );
    
);

【讨论】:

以上是关于jquery 在 Internet Explorer 中使用多个选择器的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .attr() 使 Internet Explorer 崩溃

使用 JQuery 在 Internet Explorer 中进行 CORS 身份验证

在 Internet Explorer 中的动态内容上自动增长 jQuery 插件

无法在 localhost (WAMP) 上的 Internet Explorer 中加载 jQuery

Internet Explorer (IE) 中的 JQuery 圆角搞砸了

使用 jQuery.css 在 Internet Explorer 中获取价值