2013-07-01 19 views
0

我有我的網頁改變文本時,DIV是開放

<button id="show1" class="morelinkblack">Find Out More</button> 

上的按鈕,當點擊它運行該代碼

$("#show1").click(function(){ 
    $(".hidden-div1").slideToggle("slow"); 
}); 

是否有更改文字說的一種方式「關閉「而不是」發現更多「,而div是可見的?

+0

'if($(「#show1」)。(「:visible」)){// change text}' – krishgopinath

+0

檢查http://stackoverflow.com/questions/5580616/jquery-change-button-text – Yogesh

+0

@yogesh這似乎太不同,我比較,但謝謝你的迴應 –

回答

7

你可以這樣做:

$("#show1").click(function(){ 
    var that = $(this); 
    $(".hidden-div1").slideToggle("slow", function() { 
     if ($(this).is(":visible")) { 
      that.text("Close"); 
     } else { 
      that.text("Find out more"); 
     } 
    }); 
}); 

基礎上的意見,DIV可以根據該用戶從直接打開或關閉。在DOM準備一個簡單的檢查可以設置相應的文字:在文件準備/頁面加載

$(".hidden-div1").is(":visible") ? $("#show1").text("Close") : $("#show1").text("Find out more"); 
+0

奇妙,但當頁面加載與div已打開它不能正常工作。它從查找更多文本開始 –

+0

如果默認div設置爲打開,那麼將默認文本設置爲「關閉」 – tymeJV

+0

這一切都取決於它們來自哪裏以及它們在尋找什麼。我需要它擺動雙方。這就是爲什麼我覺得我很難找到它。你的是完美的,直到頁面加載打開div –

1

更新代碼

$("#show1").click(function() { 
    var el = $(this); 
    $(".hidden-div1").slideToggle("slow", function() { 
     if ($(this).css('display') == 'none') { // <- Updated here to check if div is close or open 
      el.text('Find Out More'); 
     } else { 
      el.text('Hide More'); 
     } 
    }); 
}); 

更新按鈕文本

$(document).ready(function() { 
    if ($(".hidden-div1").css('display') == 'none') { 
     $("#show1").text('Find Out More'); 
    } else { 
     $("#show1").text('Hide More'); 
    } 
}); 
+0

謝謝。你的工作也很棒,但是頁面可以加載div打開。發生這種情況時,文本是錯誤的。如果頁面用div加載,那麼文本是完美的 –

+0

在這種情況下,我們可以在更新按鈕文本之前檢查'$(this).css('display')'。代碼已更新。 –

+0

代碼已更新。現在按文本更新文檔就緒/頁面加載 –

1

也許這樣的:

$("#show1").click(function() { 
    var $div = $(this); 
    $(".hidden-div1").slideToggle("slow").promise().done(function() { 
     $div.text(function() { 
      return $(this).is(":visible") ? "Close" : "Find Out More" 
     }); 
    }); 
}); 
+0

感謝您的答覆。沒有,只是加載與發現更多的鏈接仍然發現更多的書面。點擊時顯示關閉鏈接,然後不會更改 –