2013-04-20 132 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