1

入力フィールドを含むリスト項目がたくさんあります。リスト項目をクリックすると、子項目を確認したいのですが、可能ですか?

function setupToptions() {
    if ($('ul.top-options input').length) {
        $('ul.top-options li').each(function(){ 
            $(this).removeClass('active');
        });
        $('ul.top-options li input:checked').each(function(){ 
            $(this).parent('li').addClass('active');
        });                
    };
};

$(document).ready(function() {
    // Top options select
    $('ul.top-options li').click(function(){
        setupToptions();
    });
    setupToptions();
});

http://jsfiddle.net/BKgdc/1/

4

5 に答える 5

2

次のように、子入力にチェックされた値を設定するだけです。

$(document).ready(function() {
    // Top options select
    $('ul.top-options li').click(function(){
        $(this).find('input:radio').prop('checked', true); // Add this line     
        setupToptions();
    });
    setupToptions();
});

http://jsfiddle.net/BKgdc/2/

于 2013-03-05T10:51:57.567 に答える
1

最良の答えではありません (すべてを変更したため) が、setupToptions機能のないもう 1 つの可能な解決策です。

$(document).ready(function() {

    $li = $('ul.top-options li');
    $li.click(function() {
        $li.removeClass('active')
        .filter(this).addClass('active').find('input').prop('checked', true);
    });
    $li.filter(':has(:checked)').click();

});

http://jsfiddle.net/BKgdc/4/

于 2013-03-05T10:59:27.083 に答える
0

次のコードを追加できます。

$('input', this).attr('checked', 'true');

liクリック機能へ。

jsフィドル

于 2013-03-05T10:52:43.463 に答える
0

完全なアプローチはclick、親の とchangeラジオ ボタンの を登録することです。これは、JavaScript を使用せずに ... を正しく使用すれば実現できることも注目に値しますlabelが、質問のために、JavaScript を次に示します。

// the click
function setChecked() {
    $('input', this).prop('checked', true).change();
}

// the change
function updateActive() {
    $('ul.top-options li').removeClass('active')
        .find('input:checked')
        .parent()
        .addClass('active');
}

// hooking it together
$(document).ready(function() {
    $('ul.top-options li').click(setChecked).find('input').change(updateActive);
});

jsFiddle デモ

于 2013-03-05T10:54:36.663 に答える
0

これは非常に簡単に行うことができます。このコードを追加するだけです。

$("li").click(function(){
    $(this).find("input").attr('checked', 'checked');
});
于 2013-03-05T10:51:51.653 に答える