2016-01-26 199 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($) {  
... 
}); 

編輯創建從評論:

他們.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

感謝您的快速響應。 但如果我把。點擊()到 >> jQuery的(文件)。就緒(函數($){<<(表示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

可悲的是它的確切同樣的問題,這條路。 在原來的代碼我的。點擊()後,得到了一個更聲明。 它是一種淡入()和它的工作原理沒有問題 - 所以IE認識到它(但不是之前的.click)。 – sampa

0

得到了解決。

奇怪的淡入在.load的IE(如。點擊)

$(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

廣告「超時」是一種人爲的方法,簡單地說「延遲一些」;你應該使用更明確的方法; –