我正在尝试将侧边栏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>
答案 0 :(得分:1)
稍后再提供两条警报说明,并找到问题所在。在IE7中,this.getAttribute('href')
返回完整地址(http:// .... #tabIdentifier)
,而在其他浏览器(包括IE8)中,它返回href中的实际字符串,即“#tabIdentifier”。
通过添加一点字符串处理解决了问题:
targetId = targetId.substring(targetId.lastIndexOf('#'));
答案 1 :(得分:0)
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>
答案 2 :(得分:0)
如果我没错,可能会发生的事情是,IE会将您的页面重定向到指定的href,并在进程中取消您尝试在标签上触发的任何事件。