jquery上的文字改变:缺血

时间:2011-04-11 10:27:02

标签: jquery

我正在尝试构建一个函数来更改复选框选择上的文本,请检查以下内容......

Jquery代码

$(document).ready(function() {
if($('#active').is(':checked')) {
    $('strong', '#status').text('Active');
}
else {
    $('strong', '#status').text('Inactive');
}
});

Html表格

 <span id="status"><input name="active" type="checkbox" value="1" id="active" />
<strong>Active</strong></span>

它在页面加载时非常有效,但是如果我们更改#active的值或者我们点击#active它就不会更改活动或非活动等文本。谢谢你的帮助。

5 个答案:

答案 0 :(得分:4)

在doc ready块中或在关闭body标记之前,首先需要将更改处理程序附加到元素。然后,您可以触发更改事件,以便在呈现页面时文本正确。

$(function(){

    function setDisplayText() {

      var displayText = this.checked ? 'Active' : 'Inactive';
      $('strong', '#status').text(displayText);

    }

    //setup change handler and then trigger 
    //it to ensure correct text on doc ready
    $('#active').change(setDisplayText)
                .trigger('change');

});

答案 1 :(得分:3)

您需要将事件监听器附加到您的复选框。

$(document).ready(function() {

  function updateStatus() {
    if($('#active').is(':checked')) {
      $('strong', '#status').text('Active');
    }
    else {
      $('strong', '#status').text('Inactive');
    }
  }

  $('#active').bind('change', updateStatus);

  updateStatus();

});

更新 - 更改了代码以启动文档就绪。

答案 2 :(得分:1)

这是因为您没有将代码绑定到复选框的onchange事件。

当页面加载时,您的代码只会检查是否选中了复选框,因为代码绑定到文档对象的onready事件。 在此之后它将不再运行相同的代码

你可以试试这个。

$('#active').bind('change', function() {
    if($('#active').is(':checked')) {
     $('strong', '#status').text('Active');
    }
    else {
     $('strong', '#status').text('Inactive');
    }    
});

答案 3 :(得分:0)

您是否厌倦了使用'change'事件处理程序?

看起来有点像这样:

$('#active').change(function(e)
{
  if($(this).is(':checked')) {
    $('strong', '#status').text('Active');
  }
  else {
    $('strong', '#status').text('Inactive');
  }
});

答案 4 :(得分:0)

您可以调用函数onChange of checkbox:

<input name="active" type="checkbox" value="1" id="active" onchange="ChangeText();"/>

$(document).ready(function() { 
function ChangeText() {
if($('#active').is(':checked')) {
     $('strong', '#status').text('Active');
 } else {
     $('strong', '#status').text('Inactive'); 
} 
}
}); 

你可以在onload of body上调用相同的函数(ChangeText)。