link click(): тело функции jQuery не достигнуто

Я пытаюсь выровнять высоту боковой панели div по высоте другого div, доступ к которому (показать / скрыть), нажав на ссылку. Решение, которое я реализовал до сих пор, заключается в том, чтобы прикреплять функцию к каждому клику и устанавливать $(''). Height(height) для боковой панели div. "Конечно, это не работает в 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>

3 ответа

Решение

Еще две инструкции оповещения позже, и проблема была найдена. В IE7 this.getAttribute('href') возвращает полный адрес (http:// .... #tabIdentifier)в то время как в других браузерах (включая IE8) он возвращал фактическую строку в href, а именно "#tabIdentifier".

Проблема решена добавлением небольшой обработки строк:

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

Ты называешь эту функцию? И работал ли он в других браузерах? Попробуй это:

 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 атрибут, а не #:

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

Если я не ошибаюсь, то, что может случиться, заключается в том, что IE перенаправляет вашу страницу на указанный href и в процессе отменяет любые события, которые вы пытаетесь сгенерировать в теге.

Другие вопросы по тегам