【问题标题】:link click(): jQuery function body not reached链接 click(): jQuery 函数体未到达
【发布时间】:2010-09-13 06:13:48
【问题描述】:

我正在尝试将侧边栏 div 的高度与另一个 div 的高度对齐,通过单击链接访问(显示/隐藏)。到目前为止我实现的解决方案是为每次点击附加一个函数,并为侧边栏 div 设置 $('').height(height)。 '当然,它在 IE7 中不起作用,尽管它在 IE8 和 firefox 中很棒。

JS代码:

     function BindResizeSideBar() {
        $('div#containerFloat div#tabs-box a').each ( function() {
            var targetId = this.getAttribute('href');
            if($('div#' + targetId).length == 0) return;
            $(this).bind('click', function() {
                var height = $('div#' + targetId).height() + 90;
                alert(targetId + ', ' + height);
                $('div#divSavedSearchesSideBar div.leftSide').height(height);
            });
        });
        // init: click on tabProfile;
        $('div#containerFloat div#tabs-box a[href=#tabProfile]').click();
    }

HTML 结构:

<div#content-side.searchProspects>
    <div#sidebar style="float: left; width: 15%;">
    <div#divTabContainer>
        <div#header>
        <div#containerFloat>
            <div#tabs-box>
            <div#tabContent1>
            <div#tabContent2>
            ...
            <div#tabContent6>

【问题讨论】:

  • 你的 HTML 真的是这样的吗?
  • HTML 实际上并不是那样的;这是其结构的简短版本。 HTML 实际上有 3 页长,由 5 个不同的 ascx-es 组成。

标签: jquery internet-explorer-7


【解决方案1】:

稍后再发出两个警报指令,问题就被发现了。在 IE7 中,this.getAttribute('href') 返回完整地址 (http:// .... #tabIdentifier),而在其他浏览器(包括 IE8)中,它返回的是 href 中的实际字符串,即“#tabIdentifier”。

通过添加一点字符串处理解决了问题:

 targetId = targetId.substring(targetId.lastIndexOf('#'));

【讨论】:

    【解决方案2】:

    你调用那个函数吗?它在其他浏览器中是否有效?试试这个:

     function BindResizeSideBar() {
        $("div#containerFloat div#tabs-box a").each (function() {
            var targetId = $(this).attr("href"); // starts with #
            if($("div" + targetId).length == 0) return;
            $(this).bind("click", function() {
              var height = $("div" + targetId).height() + 90;
              alert(targetId + ', ' + height);
              $("div#divSavedSearchesSideBar div.leftSide").height(height);
            });
        });
        // init: click on tabProfile;
        $('div#containerFloat div#tabs-box a[href=#tabProfile]').click();
    }
    

    在您的 HTML 代码中,id 由 id 属性给出,而不是由 # 给出:

    <div id="xxxxxx" ...></div>
    

    【讨论】:

    • IE8和FF都可以,只有IE7一直在发疯。
    • 我发布的 'html' 是简写,可以让您了解页面的结构。所以“
      ”是“
      ”的简称
    • oooh...但是你还是应该试试代码,因为“href”属性以#开头,所以你不需要搜索“#”+“#href”跨度>
    • 'div#' + '#id' 不错;它确实有效,很奇怪,但无论如何我都替换了它。对于targetId,我使用了this.href;它给出了完整的地址,但至少它的行为是一致的。
    【解决方案3】:

    如果我没记错的话,可能发生的事情是 IE 将您的页面重定向到指定的 href,并且正在取消您尝试在 a 标签上触发的任何事件。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签