2012-06-29 2 views
0

Я работаю над адаптированием прикованной функции раскрывающегося списка, которую я нашел онлайн на моем сайте. Ниже приведен код, который я нашел онлайн. Одна из проблем заключается в том, что у меня возникли проблемы с пониманием строки, которая читает var connection = selected.data('connection'); Является ли атрибутом соединения что-то общее для 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'); 
}); 

ответ

0

Посмотрите на функцию jQuery.data(). Эта функция позволяет сохранять и извлекать произвольные данные, связанные с указанным элементом.

В вашем примере «опция» имеет некоторый атрибут соединения имени. Если посмотреть на код, кажется, что соединение атрибута используется для принятия решения о том, какую из следующих ссылок выбрать в цепочке.

+0

Я понял это, но нигде в коде метод data() не используется для назначения информации с именем атрибута «соединение» с объектом option. – user532493

+0

data- * являются атрибутами данных HTML5. Они устанавливаются как соединение данных в коде, но могут быть выбраны как данные() Дополнительная информация: http://www.marcofolio.net/webdesign/html5_data-_attributes_are_great_and_you_know_it.html – Stewie

+0

Добро пожаловать, мой друг, прочитайте свой код connection = '' ; if (v) { connection = 'data-connection = "' + v + '"'; } опции + = '<значение опции = "' + k + '"' + соединение + '>' + k + ''; – Stewie

Смежные вопросы