2011-09-06 32 views
0

我有一個鏈接,單擊時使用.replaceWith填充div代碼爲.swf文件的HTML代碼。下面是一個例子:認識到鏈接已被點擊之前,並更改操作

$().ready(function() { 
$('a.roots').click(function() { 
    $('#flashcontent').replaceWith("<div id=\"flashcontent\">" + 
       "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"463\" height=\"490\" id=\"FlashID1\" title=\"Liberty Creative Solutions roots\">" + 
       "<param name=\"movie\" value=\"flash/roots.swf\" />" + 
       "<param name=\"quality\" value=\"high\" />" + 
       "<param name=\"wmode\" value=\"opaque\" />" + 
       "<param name=\"BGCOLOR\" value=\"#394A59\" />" + 
       "<param name=\"swfversion\" value=\"6.0.65.0\" />" +     
       "<param name=\"expressinstall\" value=\"scripts/expressInstall.swf\" />" +      
       "<object type=\"application/x-shockwave-flash\" data=\"flash/roots.swf\" width=\"463\" height=\"490\">" + 
       "<param name=\"quality\" value=\"high\" />" + 
        "<param name=\"wmode\" value=\"opaque\" />" + 
        "<param name=\"BGCOLOR\" value=\"#394A59\" />" + 
        "<param name=\"swfversion\" value=\"6.0.65.0\" />" + 
        "<param name=\"expressinstall\" value=\"scripts/expressInstall.swf\" />" + 
       "<div>" + 
        "<h4>Content on this page requires a newer version of Adobe Flash Player.</h4>" + 
        "<p>" + "<a href=\"http://www.adobe.com/go/getflashplayer\">" +"<img src=\"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif\" alt=\"Get Adobe Flash player\" width=\"112\" height=\"33\" />" + "</a>" + "</p>" + 
        "</div>" + 
       "</object>" + 
       "</object>" + 
      "</div>"); 
}); }); 

我想第一次點擊鏈接插入swf html。如果再次點擊,我希望div html更改爲其他內容。例如:

$('a.roots).click(function() { 
    $('#flashcontent').replaceWith("<div id=\"flashcontent\">" + 
       "<a href=\"#\" onmouseout=\"MM_swapImgRestore()\" onmouseover=\"MM_swapImage('Liberty Creative Solutions - Roots','','images/nf_roots_over.jpg',1)\">" + "<img src=\"images/nf_roots.jpg\" name=\"Liberty Creative Solutions - Roots\" width=\"463\" height=\"488\" border=\"0\" id=\"Liberty Creative Solutions - Roots\" />" +"</a>" + 
      "</div>"); 
    }); }); 

如何創建一個監聽器,以確定是否該鏈接被點擊一次,有它然後用新代碼中刪除.swf文件的HTML代碼,並替換?

我也想,也許使用cookies來檢查:

$('a.roots').click(function() { 
    if($.cookie('rootsclicked') != null) { 

     $('#flashcontent').replaceWith("<a href=\"#\" onmouseout=\"MM_swapImgRestore()\" onmouseover=\"MM_swapImage('Liberty Creative Solutions - Roots','','images/nf_roots_over.jpg',1)\">" + "<img src=\"images/nf_roots.jpg\" name=\"Liberty Creative Solutions - Roots\" width=\"463\" height=\"488\" border=\"0\" id=\"Liberty Creative Solutions - Roots\" />" + "</a>"); 
     } 

    else { 
     $('#flashcontent').replaceWith("<div id=\"flashcontent\">" + 
       "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"463\" height=\"490\" id=\"FlashID1\" title=\"Liberty Creative Solutions roots\">" + 
       "<param name=\"movie\" value=\"flash/roots.swf\" />" + 
       "<param name=\"quality\" value=\"high\" />" + 
       "<param name=\"wmode\" value=\"opaque\" />" + 
       "<param name=\"BGCOLOR\" value=\"#394A59\" />" + 
       "<param name=\"swfversion\" value=\"6.0.65.0\" />" +     
       "<param name=\"expressinstall\" value=\"scripts/expressInstall.swf\" />" +      
       "<object type=\"application/x-shockwave-flash\" data=\"flash/roots.swf\" width=\"463\" height=\"490\">" + 
       "<param name=\"quality\" value=\"high\" />" + 
        "<param name=\"wmode\" value=\"opaque\" />" + 
        "<param name=\"BGCOLOR\" value=\"#394A59\" />" + 
        "<param name=\"swfversion\" value=\"6.0.65.0\" />" + 
        "<param name=\"expressinstall\" value=\"scripts/expressInstall.swf\" />" + 
       "<div>" + 
        "<h4>Content on this page requires a newer version of Adobe Flash Player.</h4>" + 
        "<p>" + "<a href=\"http://www.adobe.com/go/getflashplayer\">" +"<img src=\"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif\" alt=\"Get Adobe Flash player\" width=\"112\" height=\"33\" />" + "</a>" + "</p>" + 
        "</div>" + 
       "</object>" + 
       "</object>" + 
      "</div>"); 
     //and set a cookie named "rootsclicked" 
     setcookie(); 

    function setCookie(){ 
     document.cookie = 'cookieName=rootsclicked'; expires="1/01/2015 00:00:00"; 
    }; 
    }; 
    }); 

會是這樣的工作還是我使它太複雜?

+0

你可以在一些隱藏字段中保持計數器爲了檢查點擊次數。 – Praveen

回答

1

您可以使用數據的方法來存儲一個值,看看是否元素已經被點擊:

$(function() { 
    $('a.roots').click(function() {  
     var alreadyDone = ($(this).data("clicked") == "1"); 
     if(alreadyDone){ 
      $('#flashcontent').replaceWith("<WITH-OTHER-CONTENT>"); 
     } else { 
      $(this).data("clicked", "1") ; 
      $('#flashcontent').replaceWith("<WITH-SOME-CONTENT>"); 
     } 
});  
+0

您不需要將點擊事件包裝在DOM就緒功能中 - 如果不存在,則不能點擊它) – AlienWebguy

+0

@AlienWebguy:如果包含點擊處理程序綁定的腳本標記出現在元素可用之前會發生什麼到DOM?在任何一種情況下,我都會按照慣例操作。 – Chandu

+0

如果要在頁面刷新後存儲狀態,可以使用[cookie插件](http://plugins.jquery.com/files/jquery.cookie.js.txt )。添加onReady檢查數據值'var clicked = $ .cookie('clicked'); $('a.roots')。data(「clicked」,clicked)'並存儲cookie'... $(this).data(「clicked」,「1」); $ .cookie('clicked',1); ...}' – atma

1

使用一個數據對象:

$('a.roots').click(function() 
{ 
    if($(this).data('clicked') === true) 
    { 
     // do something else 
    } 
    else 
    { 
     $(this).data('clicked',true); 
     // do normal thing 
    } 
}); 
+0

這將工作在文件中的多個鏈接。例如,如果在頁面上我有一個與類「.roots」類的鏈接,並且另一個類爲「.belongs」的鏈接將爲它們中的每一個創建上述函數,因爲它使用「this」?或者是否需要編碼才能使每一個獨特? – Adriana

+0

是的,'$(this)'指的是實際的節點,而不是類。 – AlienWebguy