2016-01-26 2 views
0

Следующий метод .click() - запущен в Chrome без проблем. В Internet Explorer он запускается только при обновлении страницы (F5). Если я получаю доступ к странице, введя URL-адрес (или перенаправленный кнопкой мыши с другой страницы), метод .click НЕ запускается.ASP.NET JQuery .click() не работает в IE11

Но если я поставил предупреждение («?») Перед .click(), он тоже работает в IE!

Почему это не работает правильно в IE? Я не могу позволить предупреждение() там ...

$(window).load(function() { 
    //Fake click on the last used Tab 
    alert("?"); 
    $("#"+GetCookie("lastTab["+window.location.pathname+"]")).click(); 
}); 

=> Доступные (кликабельны) вкладки создаются в

jQuery(document).ready(function($) {  
... 
}); 

EDIT Из комментариев:

Они создаются внутри .read(function($) таким образом:

$("#HillbillyTabs").append('<li><a href="#Tab' + upperIndex + '" id="TabHead' + upperIndex + '" onclick="SetCookie(this.id);">' + title + '</a></li>').after('<div id="Tab' + upperIndex + '"></div>'); 

После того, как контейнер будет создан после того, как сценарий:

<div id="tabsContainer"><ul id="HillbillyTabs"></ul></div> 
+2

Моя догадкой будет DOM не загружен, когда событие переплетены - так 'alert' киосков достаточно долго, что DOM загружается, и событие связывается. – tymeJV

+0

Спасибо за ваш быстрый ответ. Но если я положил .click() в >> jQuery (document) .ready (function ($) {<< (что указывает, что DOM готов?) все равно не работает ... – sampa

+0

Как элементы, которые вы пытаетесь щелкнуть, сгенерированы? – tymeJV

ответ

1

Не пытайтесь вводить вызов функции, а добавить прослушиватель событий к коду. Например: (я сделал некоторые переменные, как ваш код не указывают на какие-то вещи здесь)

var upperIndex = $('#tabsContainer').find('ul').length; 
var title = "mytitle"; 
var newHeadId = 'TabHead' + upperIndex; 
var newTabId = 'Tab' + upperIndex; 

$("#HillbillyTabs").append('<li><a href="#' + newTabId + '" id="' + newHeadId + '">' + title + '</a></li>').after('<div id="' + newTabId + '"></div>'); 

$("#HillbillyTabs").on('click', '#' + newHeadId, function() { 
    console.log(this.id); 
    SetCookie(this.id); 
}); 
+0

заверните это в документ, и вы должны быть хорошими –

0

кажется IE не признает:

$(window).load() 

Вы можете попробовать:

window.onload = function() { 
    $("#"+GetCookie("lastTab["+window.location.pathname+"]")).click(); 
}; 
+0

к сожалению, это точно так же, проблема с этим способом. В исходном коде я получил еще одно заявление после .click(). Сво FadeIn(), и это работает без проблем - поэтому IE его распознает (но не .click раньше). – sampa

0

Получили решение.

Любопытно FadeIn в .load не работает для IE тоже (как .click)

$(window).load(function() { 
    //Fake click on the last used Tab 
    alert("?"); 
    $("#"+GetCookie("lastTab["+window.location.pathname+"]")).click(); 
    // When the page has loaded in Chrome 
    $("#DeltaPlaceHolderMain").fadeIn(0); 
}); 

Для выцветания я должен был немедленно метод после создания-метода для вкладок (внутри .ready()) вместо конца .ready().

Теперь есть и .click, и теперь он работает для IE.

jQuery(document).ready(function($) {  
    setTimeout(function() { 
     ... 
     //Creation of tabs 
     $("#tabsContainer").tabs(); 
     //Fake click on the last used Tab 
     $("#"+GetCookie("lastTab["+window.location.pathname+"]")).click(); 
     // When the page has loaded in IE 
     $("#contentBox").fadeIn(0); 
    }, 0); 
//.click NOT here 
}); 

Спасибо за ваши быстрые ответы и советы!

Сердечные приветы

+0

Ad ding «timeout» - это искусственный метод, который просто говорит «задерживать некоторые»; вы должны использовать более определенный подход; –

Смежные вопросы