Вам необходимо изменить данные для всех трех выпадающих меню select2. Прямо сейчас вы даете одинаковые данные для всех трех выпадающих. Здесь вы можете попробовать два подхода:
1.Создать массив с начальными значениями. Когда в первом раскрывающемся списке выбрано какое-то значение, скопируйте значения массива, кроме выбранного, в другой массив. Теперь используйте этот массив для второго выпадающего списка. Вы можете использовать событие onchange в раскрывающихся списках для обнаружения изменений и обновления массива для следующего раскрывающегося списка.
<select class="js-example-templating1" name="mem1" onchange="updateNextArray()">
<?php
$query = "select * from user";
$query_result = query($query);
while($row = fetch_array($query_result)) {
echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
}
?>
</select>
<br><br>
<select class="js-example-templating2" name="mem2" onchange="updateNextArray()">
<?php
$query = "select * from user";
$query_result = query($query);
while($row = fetch_array($query_result)) {
echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
}
?>
</select>
<br><br>
<select class="js-example-templating3" name="mem3" onchange="updateNextArray()">
<?php
$query = "select * from user";
$query_result = query($query);
while($row = fetch_array($query_result)) {
echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
}
?>
</select>
<script>
function updateNextArray(){
//update array here
}
function formatState (state) {
if (!state.id) {
return state.text;
}
var $state = $(
'<span>' + state.text + '</span>'
);
return $state;
};
$(".js-example-templating1").select2({
data: Array1,
templateResult: formatState
});
$(".js-example-templating2").select2({
data: Array2,
templateResult: formatState
});
$(".js-example-templating3").select2({
data: Array3,
templateResult: formatState
});
</script>
2.AJAX будет работать, если вы используете его правильно.
$(".js-example-templating").select2({
ajax: {
url: '../../subjects.json', // or api endpoint which supplies the array
dataType: 'json',
});
Ну, строка над заголовком - то, что числа технически сгенерированы в <li>
, так что-либо Вы делаете к <li>
будет влиять на число. От спецификации:
"Большинство элементов блочного уровня в CSS генерирует одно основное поле блока. В этом разделе мы обсуждаем два механизма CSS, которые заставляют элемент генерировать два поля: одно основное поле блока (для содержания элемента) и одно отдельное поле маркера (для художественного оформления, такого как маркер, изображение или число)".
Заметьте, что и поле маркера и основное поле принадлежат тому же элементу - в этом случае, элемент списка. Соответственно, мы должны ожидать все <li>
моделирование для применения к и маркеру и к содержанию. Это также не удивительно, если Вы думаете об этом, как будто сам элемент списка генерирует контент нумерации (который эффективно это делает в условиях CSS). Это подтверждено позже, когда спецификация продолжается:
"Свойства списка позволяют основное визуальное форматирование списков. Как с более общими маркерами, элементом с 'дисплеем: элемент списка' генерирует основное поле для содержания элемента и дополнительное поле маркера. Другие свойства списка позволяют авторам указывать тип маркера (изображение, глиф или число) и его положение относительно основного поля (снаружи или в нем перед содержанием). Они не позволяют авторам указывать отличный стиль (цвета, шрифты, выравнивание, и т.д.) для маркера списка или регулировать его положение относительно основного поля".
Таким образом, потому что маркер принадлежит списку, он затронут <li>
моделирование и не является корректируемым непосредственно. Единственный способ достигнуть другого моделирования для маркера состоит в том, чтобы вставить a <span>
в элементе списка и стиле промежуток со свойствами Вы хотите отличаться от маркера.
Это должно работать:
<ol id="footnotes">
<li><span>This is the first footnote...</span></li>
<li><span>This is the second footnote...</span></li>
</ol>
#footnotes li { color: #f90; }
#footnotes li span { color: #000; }
Как насчет этого?
<head>
<style>
#footnotes li { color: #f90; }
#footnotes li a { color: #000; }
</style>
</head>
<body>
<ol id="footnotes">
<li><a name="footnote1">This is the first footnote...</a></li>
<li><a name="footnote2">This is the second footnote...</a></li>
</ol>
</body>