私のHTMLは次のようになります(残念ながら、使用しているCMSでレンダリングされているため変更できません)。
<li>
<input id="cb1" type="checkbox">
<label for="cb1">
<div>Some Other Content</div>
<div class="pledge">Click to Pledge</div>
</label>
</li>
jQuery。
$("div.pledge").click(function() {
var checkboxlabel = $(this).parent("label");
$("input[for=checkboxlabel]").attr('checked', !$checkbox.attr('checked'));
});
このコードを使用すると、ラベル内のどこかをクリックするとチェックボックスが切り替わります。<div class="pledge">
必要なのは、要素をクリックしたときにのみアクションが実行されるようにすることです。.stopPropagation();だと思います。ここで私を助けますが、私はそれを正しく動作させることができませんでした。
同じ考えを達成しているように見える別のショットがあります:
$("div.pledge").click(function() {
$("input[for=' + this.parent("label").attr("id") + ']").attr('checked', !$checkbox.attr('checked'));
});