Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Загрузка контента из файла по ID в зависимости от ID нажатой кнопки (https://javascript.ru/forum/dom-window/75899-zagruzka-kontenta-iz-fajjla-po-id-v-zavisimosti-ot-id-nazhatojj-knopki.html)

oldeuboi 15.11.2018 17:00

Загрузка контента из файла по ID в зависимости от ID нажатой кнопки
 
Есть много кнопок с разными id. Например:

<a id="content1">Кнопка 1</a>
<a id="content2">Кнопка 2</a>


Есть блок, куда с помощью .load() должен быть подгружен контент при нажатии на какую-либо из кнопок. Например:

<div id="content-block"></div>


Есть файл content.html, содержащий блоки с контентом. Данные блоки имеют свой id и этот id по своему названию совпадает с id соответствующей кнопки. Например, кнопка имеет id="content1" и div c контентом в файле content.html имеет id="content1".

Как бы сделать так, чтобы при нажатии на кнопку (в данном случае на <a>), функция распознавала id этой кнопки и подставляла в load() рядом с файлом content.html. Например, если нажали на кнопку с id="content1", то происходило это:

$("#content-block").load("content.html #content1");


Если же нажали на кнопку с id="content2", то происходило это:

$("#content-block").load("content.html #content2");


Также, наряду с блоком для контента есть отдельный блок для заголовка:

<div id="title-block"></div>


Нужно чтобы так же в зависимости от id нажатой кнопки в этот блок подгружался текст из файла content.html. с таким же id только имеющий в конце "-title". Например, при нажатии на кнопку с id="content1" в <div id="title-block"></div> должен подгружаться текст с id="content1-title"

Вообщем, как сделать так, чтобы при нажатии на кнопку с id="content1" происходило это:

$("#content-block").load("content.html #content1");
$("#title-block").load("content.html #content1-title");


А если нажать на кнопку с id="content2" происходило это:

$("#content-block").load("content.html #content2");
$("#title-block").load("content.html #content2-title");


То есть, чтоб id кнопки на которую нажали подставлялось в load(), а также в конце этого id приклеивалось "-title" (в случае для заголовка).

Dilettante_Pro 15.11.2018 18:48

Цитата:

Сообщение от oldeuboi
чтобы при нажатии на кнопку с id="content1" происходило это:

<a id="content1">Кнопка 1</a>
<a id="content2">Кнопка 2</a>
<script>
document.querySelectorAll('a').forEach(function(item) { 
    item.addEventListener('click', function(){
         alert('content.html #' + this.id + '-title');
    })
});

</script>

j0hnik 16.11.2018 02:43

Dilettante_Pro,
наверное
el=>el.addEventListener
вместо
document.addEventListener
а если вешаете на документ, forEach лишний

<a id="content1">Кнопка 1</a>
<a id="content2">Кнопка 2</a>
	<script>
document.querySelectorAll('a').forEach(el=>el.addEventListener('click', function(e){
  alert('content.html #' + e.currentTarget.id + '-title');
}));


P.S. e.currentTarget будет надежней

Dilettante_Pro 16.11.2018 07:33

j0hnik,
Ну да, конечно. Это я на бегу...
почистил.


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