0

オンラインで見つけた連鎖ドロップダウン機能を自分のサイトに適応させる作業を行っています。オンラインで見つけたコードの一部を以下に示します。var connection = selected.data('connection');問題の 1 つは、Is the connection attribute something is common to jquery? という行を理解するのに苦労していることです。それとも、コードのどこかに設定されていますか? もしそうなら、これはコードのどこに設定されていますか?

$(function(){

    var questions = $('#questions');

    function refreshSelects(){
        var selects = questions.find('select');

        // Improve the selects with the Chose plugin
        selects.chosen();

        // Listen for changes
        selects.unbind('change').bind('change',function(){

            // The selected option
            var selected = $(this).find('option').eq(this.selectedIndex);
            // Look up the data-connection attribute
            var connection = selected.data('connection');

            // Removing the li containers that follow (if any)
            selected.closest('#questions li').nextAll().remove();

            if(connection){
                fetchSelect(connection);
            }

        });
    }

    var working = false;

    function fetchSelect(val){

        if(working){
            return false;
        }
        working = true;

        $.getJSON('ajax.php',{key:val},function(r){

            var connection, options = '';

            $.each(r.items,function(k,v){
                connection = '';
                if(v){
                    connection = 'data-connection="'+v+'"';
                }

                options+= '<option value="'+k+'" '+connection+'>'+k+'</option>';
            });

            if(r.defaultText){

                // The chose plugin requires that we add an empty option
                // element if we want to display a "Please choose" text

                options = '<option></option>'+options;
            }

            // Building the markup for the select section

            $('<li>\
                <p>'+r.title+'</p>\
                <select data-placeholder="'+r.defaultText+'">\
                    '+ options +'\
                </select>\
                <span class="divider"></span>\
            </li>').appendTo(questions);

            refreshSelects();

            working = false;
        });

    }

    $('#preloader').ajaxStart(function(){
        $(this).show();
    }).ajaxStop(function(){
        $(this).hide();
    });

    // Initially load the product select
    fetchSelect('productSelect');
});
4

1 に答える 1

0

jQuery.data() 関数を見てください。この関数を使用すると、指定した要素に関連付けられた任意のデータを保存および取得できます。

あなたの例では、「オプション」には接続名の属性があります。コードを見ると、属性接続を使用して、チェーン内の次のリンクのどれを選択するかを決定しているようです。

于 2012-06-29T21:06:41.637 に答える