代码之家  ›  专栏  ›  技术社区  ›  Liz

link click():未到达jQuery函数体

  •  0
  • Liz  · 技术社区  · 14 年前

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

         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>
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Liz    14 年前

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

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

     targetId = targetId.substring(targetId.lastIndexOf('#'));
    
        2
  •  0
  •   Flo Edelmann    14 年前

    你叫这个函数吗?在其他浏览器中也可以吗?试试这个:

     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>
    
        3
  •  0
  •   Sidharth Panwar    14 年前

    如果我没有错的话,可能发生的事情是IE将你的页面重定向到指定的href,并在进程中取消你试图在a标签上触发的任何事件。