3

私は奇妙な問題に遭遇しました。チェックボックス列のあるテーブルがあります。JQuery Mobile チェックボックスを使用しています。行のクリックを、この行のチェックボックスのクリックに関連付けたい。

JS:

$(document).on('pagecreate', function (event) {
    bindRowClick();
});

function bindRowClick() {
    $('.productTable').find('tr').click(function () {
        var chck = $(this).find('td.hyperLink').find('input[type=checkbox]:first');
        var chckStatus = chck.is(':checked');
        alert("chckStatus 1: " + chckStatus);
        alert("!chckStatus: " + !chckStatus);
        chck.attr('checked', !chckStatus).checkboxradio().checkboxradio('refresh');
        alert("chckStatus 2: " + chck.is(':checked'));
    });
}

HTML:これは内部にあります<td class="hyperlink">

<fieldset data-role="controlgroup" id="divCheckbox">
     <asp:CheckBox runat="server" ID="checkboxSelect" CssClass="custom chckSelect" 
          meta:resourcekey="checkboxSelectResource1" />
     <asp:Label ID="lblForChck" CssClass="lblForChck" AssociatedControlID="checkboxSelect" runat="server" 
          meta:resourcekey="lblForChckResource1" />
</fieldset>

行1回クリックするとどうなりますか(チェックボックスは今まで選択されていませんでした):

first alert returns: "chckStatus 1: false"
second alert returns: "!chckStatus: true"
third alert returns: "chckStatus 2: true"

SAME行を2回クリックするとどうなりますか(チェックボックスは以前に選択されていました):

first alert returns: "chckStatus 1: true"
second alert returns: "!chckStatus: false"
third alert returns: "chckStatus 2: false"

そして今、奇妙な部分

同じ行をもう一度クリックすると、(最初のように) チェックボックスを選択する代わりに、次の結果が得られます。

first alert returns: "chckStatus 1: true"
second alert returns: "!chckStatus: false"
third alert returns: "chckStatus 2: false"

この問題に関連している可能性があることがわかった: 以前は動作していた ".checkboxradio('refresh')" が a3 で壊れた

4

1 に答える 1

15

.attr()use .prop()and thenを使用する代わりに.checkboxradio('refresh').

デモ

于 2013-07-12T11:03:26.770 に答える