2013-03-16 78 views
0

我相信我一定是失去了一些東西就這麼簡單。我有一個名爲showHome,showRecords,showFinance的名爲showHome,showRecords,showFinance的3個頁面,我也有3個div命名爲divHome,divRecords,divFinance,並在每個div中我有3個iframe,分別命名爲iframeHome,iframeRecords,iframeFinance。jQuery的內容加載到iframe中只有第一個按鈕點擊

這裏的目標是在頁面渲染後加載第一個iframe,然後當用戶單擊下一個按鈕時,下一個iframe將動態設置其源代碼,然後顯示div以便用戶可以看到外部內容,仍然在我的域名上,但在其他地方。當然,第三個按鈕點擊也是一樣,iframe傳遞一個url來加載,然後顯示div。現在,當用戶點擊其他按鈕之一時,div應該顯示或隱藏,沒有理由重新加載內容。

所以我需要跟蹤哪個被點擊按鈕,這樣,如果有一個1,將只顯示或隱藏DIV,否則iframe的需要進行設置。我有一個版本的工作,不是很優雅的,所以我試圖用更少的代碼編寫這一點,這裏是我有什麼不工作,我知道爲什麼,但我不知道如何解決它。

我現在的劇本是這樣的

var showHome_clicked = '1'; 
var showDataMart_clicked = '0'; 
var showFinance_clicked = '0'; 
var showCost_clicked = '0'; 
var showSchedule_clicked = '0'; 
var showPerformance_clicked = '0'; 
var showWinsight_clicked = '0'; 
var pageToLoad = "http://sp2010/dashboard/0045/default.aspx"; 

function showRequestedContent(){ 
    var displayedDiv = $('div.contentDiv').filter(function(){ 
     if($(this).css('display') != 'none'){ 
      alert(buttonClicked); 
      $('.contentDiv:visible').fadeOut("fast"); 
      $("#div" + ($(this).index()+1)).show().fadeIn("slow"); 
     } 
    }); 
} 


$("input").click(function(e) 
{ 
    var buttonClicked = (e.target.id + '_clicked'); 
    var targetIframe = (e.target.id).replace("show", "iframe"); 
/* Here I need to check the variable that i created, but it contains the name of my manipulated value not the 1 or 0 I need to check for, not sure how to do this? */ 
    if(buttonClicked == '0'){ 
     $(targetIframe).attr('src', pageToLoad + '?isdlg=1'); 
      buttonClicked = '1'; 
      alert("zero"); 
      showRequestedContent; 
    } 
    else if(buttonClicked == '1'){ 
     showRequestedContent; 
     alert("one"); 
    } 

}); 

-------------更新了這個現在正在---------------

var buttonClicked = 'showHome'; 
var currentDiv = 'divHome'; 

$('.switchIframe').click(function(e){ 
    e.preventDefault(); 
    if (e.target.id != buttonClicked){ 
     targetDiv = (e.target.id).replace("show", "div"); 
     var $targetIframe = $($(this).data('target')), 
     src = $(this).data('src'); 
     if($targetIframe.attr('src') != src){ 
      $targetIframe.attr('src', src); 
     } 

     showDiv(targetDiv); 
     hideDiv(currentDiv); 
     currentDiv = targetDiv; 
     buttonClicked = e.target.id; 
    } 

}); 

function showDiv(id) { 
    var $sDiv = $('#' + id); 
    $sDiv.show(500); 
} 

function hideDiv(id) { 
    var $hDiv = $('#' + id); 
    $hDiv.hide(200); 
} 

$(document).ready(function(){ 
    $('#divHome').show(); 
}); 

回答

2

爲什麼不檢查IFRAME有一個src不等於'about:blank'

$('input').click(function(e){ 
// your code for targetIframe 

    var currentSrc = $(targetIframe).attr('src'); 
    if(currentSrc == "about:blank"){ 
    $(targetIframe).attr('src', pageToLoad); 
    } 
    showRequestedContent(); // <-- In your code you forgot the parenthesis. 
}); 

這假定您的I幀開始了:

<iframe src="about:blank" id="yourID"></iframe> 

編輯:

,以存儲和DOM節點是使用data-*屬性檢索值的最簡單方法。

例如:

<button class="switchIframe" data-target="#iframe1" data-src="http://youtube.com">Show iframe 1</button> 
<iframe src="about:blank" id="iframe1"></iframe> 

那麼你的jQuery看起來是這樣的:

$('.switchIframe').click(function(e){ 
    e.preventDefault(); 
    var $targetIframe = $($(this).data('target')), 
     src = $(this).data('src'); 

    // if it's not the same source, load it. 
    if($targetIframe.attr('src') != src){ 
    $targetIframe.attr('src', src); 
    } 

    showRequestedContent(); 
}); 
+0

樣子,將工作,我仍然有同樣的問題,不過,我似乎無法找出一種方法來動態設置targetIframe varible,我不斷收到一個未定義的錯誤由於targetIframe的值定「 iframeHome「< - 一個字符串值。我期待當我創建targetIframe變量,我可以設置實際的目標iframe,這是我試圖設置buttonClicked_clicked變量的同樣的問題,我得到一個字符串值,這是正確的,但是不是我需要做的。否則,這似乎很好! – digitalslavery 2013-03-17 09:23:02

+0

@digitalslavery - 我已經更新上面。希望有所幫助。 – ahren 2013-03-17 12:36:04

+0

謝謝你的更新,我仍然試圖圍繞如何工作。我發現幫助我的是將我的動態創建的變量傳遞給一個函數以完成此工作。感謝您的幫助。這就是我現在所需要的 – digitalslavery 2013-03-17 18:26:07

0

爲什麼你需要jQuery的是什麼?

<a href="/pages/page1.htm" target="content">Page 1</a> 
| <a href="/pages/page2.htm" target="content">Page 2</a> 
| <a href="/pages/page3.htm" target="content">Page 3</a> 
| <a href="#" id="end">End</a> 

<iframe id="frame1" name="content" src="/pages/page1.htm"/> 

由於要裝載這些頁面進入的iframe,這些訪問將被記錄到你的網站統計反正

至於顯示/隱藏:

<script type="text/javascript"> 
$('#end').on('click',function(){ 
    $('#frame1').hide(); 
}); 
</script> 

如果你想顯示幀再次隱藏,通過點擊鏈接(第1頁第2頁等)之一後,然後把你的鏈接到一個UL元素,並添加功能,你想讓它該列表內,例如工作列表項

<ul id="links"> 
    <li><a class="link" href="/pages/page1.htm" target="content">Page 1</a></li> 
    <li><a class="link" href="/pages/page2.htm" target="content">Page 2</a></li> 
    <li><a class="link" href="/pages/page3.htm" target="content">Page 3</a></li> 
    <li><a href="#" id="end">End</a></li> 
</ul> 

<script type="text/javascript"> 
$('#links a.link').on('click',function() { 
    if (!$('#frame1').is(":visible")) $('#frame1').show(); 
}); 
</script> 
+0

我需要保留加載到iframe中的內容,或者如果內容尚未被請求,當用戶第一次點擊按鈕時,它將加載到iframe中。任何時候用戶點擊一個他們已經點擊的按鈕,我們想要顯示或隱藏div,所以他們不必等待iframe再次加載。所以我需要或者擁有與按鈕相同數量的iframe,或者動態創建它們,我還需要一種動態定位當前可見div的方式,以便在用戶單擊按鈕時隱藏或顯示它。 – digitalslavery 2013-03-17 09:32:47

相關問題