使用jquery更改Struts2复选框标签

时间:2013-08-22 20:00:56

标签: jquery struts2 jsp-tags

我正在使用jquery来更改复选框的标签。

use strict';
$("#chId").click(function () {
   if (this.checked) {
         $('#divId').html("Checked");
   }
   else{
         $('#divId').html("Un-Checked");
   }

});

如果我在常规html样式中指定复选框

,则可以正常工作
<input type="checkbox" id="chId"/> 
<div id='divId'>Checked</div>

有几个复选框,我使用不同的“divId”来更改每个文本 但是,我需要使用带有“label”属性的struts checkbox标签指定它。 我知道,当它像这样完成时,我将在html上呈现标签为

<label for"checkbox_class">Checked</label>

如果更改jquery只是按类“标签”选择它会起作用

$('.label').html("Checked");

但是,如果我有多个复选框,所有标签将具有相同的类“.label”,我不知道如何通过复选框同时更改不同的文本 基本上,我想要    1)有5个标签都有不同的类“label1”,...“label5”或    2)在每个标签上都有id,以便...或    3)能够在jquery选择器中使用“for”属性吗? 我认为#(3)是我最好的选择,但我不知道如何去做 有人可以帮忙吗? 感谢

1 个答案:

答案 0 :(得分:2)

为您的复选框提供class和id属性,并使用jQuery attribute equals selector获取标签元素for属性等于复选框ID。

<script type="text/javascript">
  $(function () {
    $(".checkb").click(function () {
      if(this.checked) {
        $("label[for="+this.id+"]").html("Checked");
      }else {
        $("label[for="+this.id+"]").html("Un-Checked");
      }
    });
  });
</script>

<s:checkbox cssClass="checkb" id="checkid1" name="check1" label="Un-Checked"/>
<s:checkbox cssClass="checkb" id="checkid2" name="check2" label="Un-Checked"/>