编辑:两个if else语句都在执行。 - 我有一个带按钮的桌子。在页面加载时,如果按钮的标签是“Hello”,我想将其更改为其他内容。我有if-else语句但是一直都在执行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。首先它进入内部,如果并将标签更改为ifif然后也进入其他内部。如果我将它放在单击事件函数中,它工作正常。但是在页面加载时它无法正常工作。
您的回复将不胜感激。
由于
答案 0 :(得分:1)
您应该使用text()
方法,而不是val()
方法来获取按钮的文本。另请注意,$('button')
会选择页面中的所有按钮,这可能不是您想要的。
$('button').text() == "Hello"
另外,我注意到你在文档就绪处理程序中使用了$(this)
,这似乎是错误的,因为this
不会是对你的按钮的引用。你应该做点什么:
$(document.ready(function () {
var $btn = $('#your_button_id');
if ($btn.text() === 'Hello') {
$btn.removeClass('btn-danger');
//...
}
});
“实际上我想要选择所有按钮。”
根据这些不同的要求,您可以采取以下措施:
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');
});
答案 1 :(得分: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
答案 2 :(得分:0)
您应该使用.each()
函数,演示:http://jsfiddle.net/UCEAw/1/
$('button').each(function () {
if ($(this).val() == 'hello') {
$(this).text('Hello');
} else {
$(this).text('World');
}
});