1

このコードが機能しないように見える理由を誰か知っていますか? 私は何を間違っていますか?

JQuery 1.5.1 を使用しています。

JS コード:

$('#search_filters #discipline a').click(function(){

    var checkbox = $(this).next(':checkbox');

    if (checkbox.attr('checked')) {
        checkbox.attr("checked", true);
    } else {
        checkbox.attr("checked", false);
    }

    $(this).children('img').toggleClass("active");

    return false;
});

HTML:

<li>
    <a href="#">
        <img class="inactive" alt="Football" src="/images/disciplines/e9bc7681813110c/thumb.png">
    </a>
    <input type="checkbox" name="search_discipline[7]" value="1" class="search_discipline">
</li>
4

4 に答える 4

1

属性の変更を確認するのに役立つアイデアが 2 つだけあります。

  • Javascript を使用せずに、プレーンな HTML を最初に記述します。うまくいきましたか?だったらJSで書けよ
  • html タグを変更した場合は、属性自体をリコールして、コードが適切に実行されたことを確認できます。例)alert($({your target object}).attr({the attribute which added}));

それは私がほとんどの場合に行うことです。

于 2011-03-31T10:44:31.427 に答える
1

私はちょうどこれに遭遇しました。jQuery 1.5.1 および 1.5.2 では、checked属性の設定に少しバグがあるようです。私は運が良かった$(':checkbox').val(boolean)です(これはさらに簡単です)。

更新: 掘り下げた後、webkit インスペクターは実際checkedには DOM に属性を表示しないようですが、jQuery は適切に読み取り/書き込みを行います。非常に奇妙な。開発用のナイトリー Webkit ビルドを使用するのに適しています。

于 2011-04-25T15:14:47.270 に答える
1

「checked」属性の値は「checked」である必要があります。

if (checkbox.is(':checked'))
{
    チェックボックス.attr("チェック済み", "チェック済み");
} そうしないと {
    チェックボックス.removeAttr("チェック");
}
于 2011-03-31T10:31:50.770 に答える
0

いくつかのポインタ:

  1. $('#search_filters #discipline a')その子孫から派生するすべてのa要素を選択します。これはあなたが意図するものですか?#discipline#search_filters

  2. .next()兄弟を返すことを覚えていますか。

  3. を削除するとどうなりhref='#'ますか?

  4. あなたのクリックイベントも発火しますか?

于 2011-03-31T10:47:56.963 に答える