Как я могу получить значение атрибута clicked, если класс тот же, а значение другое

Я создал код для получения attribute value, но у меня тот же класс имени, но значение отличается для всех вариантов.

вот мои варианты html code for

$('#subcategory').click(function() {
    var  subcat_id = $( this ).find( '.subcategoryList' ).attr('value');
          console.info(subcat_id);     
    });
<option name = "subcategory" id = "subcategory">
 <option value = "3" class = "subcategoryList">Village </option>
 <option value = "4" class = "subcategoryList">Real Estate </option>
</option>

Этот html также исходит из кода функции JQuery, как показано ниже:

... $.each(res, function (key, value) {
     html += "<option  value = "+key+">"+value+" </option>";
    });
    $('#subcategory').html($(html).addClass('subcategoryList'));

    }
...

В опубликованном вами коде нет AJAX. Вы имели в виду JQuery?

Scott Marcus 07.02.2019 19:06

Да, это J query @ScottMarcus

user10522002 07.02.2019 19:08

Я полагаю, вам понадобится элемент <select> вокруг элементов <option>.

showdev 07.02.2019 19:12

Вы не можете иметь options, вложенный в другой options.

Scott Marcus 07.02.2019 19:12

Вообще-то я тебя не понимаю @ScottMarcus

user10522002 07.02.2019 19:13

Интересно, было ли намерение использовать optgroup. html.spec.whatwg.org/multipage/…

Taplar 07.02.2019 19:13

На самом деле мне не нужен раскрывающийся список, да, я хочу select, но не без опции раскрывающегося списка. @showdev

user10522002 07.02.2019 19:13

у вас неверный html. <option name = "subcategory" id = "subcategory"> должен быть <select name = "subcategory" id = "subcategory"> Это то, о чем говорит @ScottMarcus. А выбор без выпадающих опций вообще не имеет смысла

Lelio Faieta 07.02.2019 19:14
<option> используется только с выпадающими списками (select). Если это не то, что вы хотите, необходимо использовать другой тег. Что ты хочешь.
Scott Marcus 07.02.2019 19:19

Опечатка @ScottMarcus исправлена, спасибо :-)

Lelio Faieta 07.02.2019 19:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
10
57
2

Ответы 2

Во-первых, вы не можете иметь элементы option, вложенные в другие элементы option. Они должны быть вложены в элемент select.

В таком случае вам лучше работать с событием change, а не с событием click.

И, наконец, это простая операция, в которой нужно просто посмотреть на value из select после change. JQuery не нужен.

document.getElementById("subcategory").addEventListener("change", function() {
   console.info(this.value);    
});
<select name = "subcategory" id = "subcategory">
 <option value = "3" class = "subcategoryList">Village </option>
 <option value = "4" class = "subcategoryList">Real Estate</option>
</select>

@user10522002 user10522002 Да, но вы не сказали, чего хотите, делать. Используемый вами код ТОЛЬКО используется для создания раскрывающихся списков. Я даю вам ответ, который использует код, который вы показали. Если вы хотите что-то еще, покажите другой код.

Scott Marcus 07.02.2019 19:21
size = "2" удалит часть «раскрывающегося списка».
Taplar 07.02.2019 19:24

@Taplar Да, но до сих пор неясно, является ли это тем, к чему стремится ОП. У меня есть ощущение, что ему могут понадобиться радиокнопки.

Scott Marcus 07.02.2019 19:25

На самом деле я пытаюсь сделать,... варианты зависят от другого. ВЫВОД: Автомобиль->Все карты->Новый автомобиль @ScottMarcus Olx. имеет категорию. я делаю так же, как это.

user10522002 07.02.2019 19:26

@user10522002 user10522002 Это не отвечает на мой очень простой вопрос. Какой элемент пользовательского интерфейса вы хотите (переключатели, список вариантов, флажки и т. д.)?

Scott Marcus 07.02.2019 19:27

вот исправленная ссылка для полного кода: stackoverflow.com/questions/54577262/…

user10522002 07.02.2019 19:29

Похоже, что этот вопрос добавляет теги <option> к тегу <a>. Это тоже недействительно

Taplar 07.02.2019 19:30

@user10522002 user10522002 Не уверен, почему вы просто не ответите на этот вопрос вместо того, чтобы показывать неверный код. Какой элемент пользовательского интерфейса вы хотите иметь?

Scott Marcus 07.02.2019 20:57

или если вам нужна версия jquery для этого

$('#subcategory').change(function() {
    var subcat_id = $(this).val();
    console.info(subcat_id);     
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name = "subcategory" id = "subcategory">
 <option value = "3" class = "subcategoryList">Village </option>
 <option value = "4" class = "subcategoryList">Real Estate </option>
</select>

Обратите внимание, что класс для каждой опции здесь совершенно бесполезен для вашей цели.

Другие вопросы по теме