Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция клика (может и выборка) элесентов с append() (https://javascript.ru/forum/misc/70419-funkciya-klika-mozhet-i-vyborka-ehlesentov-s-append.html)

Булат Азат улы 04.09.2017 09:53

Функция клика (может и выборка) элесентов с append()
 
Здравствуйте. Нужно сделать двойную Аякс-функцию (использую библиотеку jQuery). При первом клике - загружается блок div с помощью $("body").append(data), там тег <select> с опциями. Так вот при клике на <option> должна происходить другая функция Аякс.
Проблема в том, что почему-то я не могу выбрать в яваскрипте ни блок, ни <option>, который вставлен с помощью append(). Пробовал сам вручную ставить этот блок в HTML - всё работает.
Помогите пожалуйста, как мне выбрать (сделать функцию клика) на тег (точнее, у <option> у меня есть класс, выбираю по классу, а не по тегу), созданный с помощью append()?

laimas 04.09.2017 10:04

Цитата:

Сообщение от Булат Азат улы
Помогите пожалуйста, как мне выбрать (сделать функцию клика) на тег (точнее, у <option> у меня есть класс, выбираю по классу, а не по тегу)

Что за глупости, не опцию выбирают, а обрабатывают событие change списка (select), его значением как раз и будет значение выбранной в нем опции.

рони 04.09.2017 10:06

Булат Азат улы,
вставили блок , затем поставили change на select.
про клик на option забыть и не вспоминать.
$("body").append(data).find('select').change(function() {

});

Булат Азат улы 04.09.2017 10:30

рони, laimas,
У меня данные в data были внутри другой функции, который вставляет блок. Поэтому, append(data) тут не работает. Изменил клик на опцию на change - не работает всё равно. Нужно что-то перед .change поставить?
$(".jadwalTD").click(function(){
	$.ajax ({
		url: "/mAjax.php",
		type: "POST",
		data: ({
			mbId: $(this).data("mbId"),
			kurs: $(this).data("kurs"),
			dareslarToima: 1
		}),
		dataType: "html",
		beforeSend: function() {
			$("#floatKotu").fadeIn(50);
		},
		success: function(data) {
			$("#floatKotu").fadeOut(50);
			$("body").append(data); // добавляю тот блок
		}
	});
});
$("#JKonDares").change(function(){ // #JKonDares - это идентификатор select
	$("#floatJadwalKon").remove(); // #floatJadwalKon - это блок, что я добавил в первой функции
	alert($(this).val()); // это для проверки, вывод value опции
	/*$.ajax ({
		url: "/mAjax.php",
		type: "POST",
		data: ({
			mbId: $(this.select).data("mbId"),
			kurs: $(this.select).data("kurs"),
			daresId: $(this).val()
		}),
		dataType: "html",
		beforeSend: function() {
			$("#floatKotu").fadeIn(50);
		},
		success: function(data) {
			$("#floatKotu").fadeOut(50);
			$(".jadwalTD").append(data);
		}
	});*/
});


$('select').change вернет тот же результат, что и $("option").click?
Не могли бы вкратце объяснить, а почему нельзя "на опцию кликать"? :-?

рони 04.09.2017 10:40

Цитата:

Сообщение от Булат Азат улы
Поэтому, append(data) тут не работает

не понимаю

возможно вам поможет

$("body").on("change", "#JKonDares", function(){ alert($(this).val()); })

рони 04.09.2017 10:43

Цитата:

Сообщение от Булат Азат улы
Не могли бы вкратце объяснить, а почему нельзя "на опцию кликать"?

не все браузеры это подерживают, в 99.9999999999% случаях в этом нет необходимости.

Булат Азат улы 04.09.2017 11:05

рони,
Да, так всё работает. Спасибо!
На счёт опций тоже понял, спасибо за объяснение!


Часовой пояс GMT +3, время: 04:43.