2013-04-20 63 views
0

編輯:如果else語句正在執行。 - 我有一個帶有按鈕的桌子。在頁面加載時,如果按鈕的標籤是'Hello',我想將其更改爲其他內容。我有if-else語句,但是所有的時候,如果else語句正在執行。我在這裏沒有什麼問題。jQuery - 如果在頁面加載時執行if else語句

$(document).ready(function() { 

    if($('button').val() == "Hello") { 
     alert("Hello I am in if"); 
     $(this).removeClass('btn-danger'); 
     $(this).addClass('btn-primary'); 
     $(this).text('ifif'); 
    } 
    else { 
    alert("Hello I am in else"); 
    $(this).removeClass('btn-primary'); 
    $('button').addClass('btn-danger'); 
    $('button').text('elseelse'); 
    } 
    }); 

每次,即使按鈕的初始標籤是'Hello',按鈕的標籤也會變爲elseelse。首先它進入if並將標籤更改爲ifif,然後再進入其他內部。如果將它放入click事件函數,它可以正常工作。但在頁面加載時,它無法正常工作。

您的迴應將不勝感激。

感謝

+3

「按鈕」,或「按鈕***縣*** 「? – 2013-04-20 05:33:12

+0

發佈你的makrup以及.. POst的HTML – 2013-04-20 05:33:21

+0

在頁面有多少個按鈕 – 2013-04-20 05:39:01

回答

1

你應該使用text()方法,而不是val()方法來獲取該按鈕的文本。另外請注意,$('button')會選擇你頁面中的所有按鈕,這可能不是你想要的。

$('button').text() == "Hello" 

Additionnaly,我注意到你正在使用的文件準備好處理$(this),至極似乎是錯誤的,因爲this不會對您的按鈕的引用。你應該這樣做:

$(document.ready(function() { 
    var $btn = $('#your_button_id'); 

    if ($btn.text() === 'Hello') { 
     $btn.removeClass('btn-danger'); 
     //... 
    } 
}); 

「其實我想選擇所有按鈕」

根據這些不同的要求,這裏是你能做什麼:

http://jsfiddle.net/WpJpV/1/

HTML

<button class="btn-danger">Hello</button> 
<button class="btn-danger">Hello</button> 
<button class="btn-danger">Hello></button> 
<button class="btn-danger">Hello></button> 
<button class="btn-primary">Yo</button> 

JS

$(function() { 
    var classes = 'btn-danger btn-primary'; 

    $('button:not(:contains(Hello))').toggleClass(classes).text('elseelse'); 
    $('button:contains(Hello)').toggleClass(classes).text('ifif'); 

}); 
+0

實際上我想要所有的按鈕被選中 – LTCRails 2013-04-20 05:38:58

+0

@ user2174925然後你需要使用'.each()'和循環通過所有的按鈕,否則它只會是頁面上的第一個按鈕,它將執行檢查。 – 2013-04-20 05:41:12

+0

@plalx using text()method does not help。使用val()方法在click事件中正常運行。我想這個問題是在頁面加載期間 – LTCRails 2013-04-20 05:42:19

0

嘗試

$(function(){ 
    $('button').not(':contains(Hello)').removeClass('btn-primary').addClass('btn-danger').text('elseelse'); 

    $('button:contains(Hello)').removeClass('btn-danger').addClass('btn-primary').text('ifif'); 
}); 

演示:Fiddle

或者

$(function(){ 
    $('button').each(function(){ 
     var $this = $(this); 
     if($this.text() == 'Hellow'){ 
      $this.removeClass('btn-danger').addClass('btn-primary').text('ifif'); 
     } else { 
      $this.removeClass('btn-primary').addClass('btn-danger').text('elseelse'); 
     } 
    }) 
}); 

演示:Fiddle

+0

謝謝,這和上面一樣。但我沒有得到任何地方。請閱讀@plalx – LTCRails 2013-04-20 10:16:27

+0

@ user2174925提供的上述答案中的評論請分享使用的按鈕和表 – 2013-04-20 10:25:29

+0

@ user2174925我們提供了演示的請編輯樣本以重新創建問題 – 2013-04-20 10:25:55

0

您應該使用.each()功能,演示:http://jsfiddle.net/UCEAw/1/

$('button').each(function() { 
    if ($(this).val() == 'hello') { 
     $(this).text('Hello'); 
    } else { 
     $(this).text('World'); 
    } 
}); 
+0

它給了我'世界'。我需要你好 – LTCRails 2013-04-20 09:35:14

+0

如果和正在執行 – LTCRails 2013-04-20 15:44:18