Я пытаюсь создать список переключателей, который изменяется на основе предыдущих вариантов. Я использую атрибут данных, чтобы показать, какой список должен отображаться на основе атрибута данных, но, несмотря на то, что атрибут данных изменяется на правильный, он отображает неправильный список.
Список 1: первый btn "выберите один" ищет соответствующее значение в атрибуте.
data-popout-trigger="query-list-main"
data-popout-container="query-list-main"
List2: вторая кнопка «выбрать два» атрибута данных обновляется на основе первого выбора. напр.
data-popout-trigger="query-list-2"
Теперь, если я go вернусь и поменяю свой первый выбор, моя вторая кнопка получит новый атрибут данных, но все равно покажет предыдущий выбор.
HTML
<div class="query">
<p>I am<span class="query__option jsPopoutTrigger" data-popout-trigger="query-list-main" data-query-link-out> PICK ONE </span> looking for</p> <br>
<div class="query__option-list jsPopoutTarget" data-popout-container="query-list-main">
<span class="query__option " data-query-link="query-list-1"> an individual </span> <br>
<span class="query__option " data-query-link="query-list-2"> an entrepreneur </span>
</div>
<p>advice on<span class="query__option jsPopoutTrigger" data-popout-trigger data-query-list-update> PICK TWO</span></p>
<div class="query__option-list jsPopoutTarget" data-popout-container="query-list-1">
<span class="query__option"> Option 1a </span> <br>
<span class="query__option"> Option 1b </span>
</div>
<div class="query__option-list jsPopoutTarget" data-popout-container="query-list-2">
<span class="query__option"> Option 2a </span> <br>
<span class="query__option"> Option 2b </span>
</div>
</div>
jQ
var toggleList = function() {
var popoutTrigger = $('.jsPopoutTrigger');
var closePopoutTrigger = $('.jsClosePopoutTrigger');
var ourClass = "popout-is-active";
var body = $("body,html");
popoutTrigger.on("click", function(e) {
e.preventDefault();
// Get the data attribute of the popout triggger object
var popoutId = $(this).data("popout-trigger");
// Find the corresponding popout target
var popoutTarget = $('.jsPopoutTarget[data-popout-container=' + popoutId + ']');
body.toggleClass("popout-is-active");
$(this).toggleClass(ourClass);
popoutTarget.toggleClass(ourClass);
});
// First list options
var selectList= $('[data-query-link]');
// When I click a first list option
selectList.each(function() {
$(this).on("click", function(e) {
// Prevent default behaviour
e.preventDefault();
// Get the text from the selected item
var getLinkText = $(this).text();
// Update the text in the first select to match selection
$('[data-query-link-out]').text(getLinkText);
// Find out what list item we are trying to open
$listItemSelected = $(this).data('query-link');
// reset attr on 2nd button
// Add this attribute to 2nd button so that we know which list to open
$('[data-query-list-update]').attr("data-popout-trigger", $listItemSelected );
// close window on link click
$('[data-popout-container]').removeClass("popout-is-active");
// Open the selected list
});
});
closePopoutTrigger.on("click", function(e) {
e.preventDefault();
// Get the data attribute of the popout triggger object
var $popoutId = $(this).data("popout-trigger");
// Find the corresponding popout target
var popoutTarget = $('.jsPopoutTarget[data-popout-container=' + $popoutId + ']');
body.removeClass("popout-is-active");
$(this).toggleClass(ourClass);
popoutTarget.toggleClass(ourClass);
})};
Почему это происходит, любой совет?
Вот код CodePen для моего кода.