Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   уникальноcть id ключа (php) и имени функции (jscript) под него (https://javascript.ru/forum/dom-window/69686-unikalnoct-id-klyucha-php-i-imeni-funkcii-jscript-pod-nego.html)

ef1 12.07.2017 10:22

уникальноcть id ключа (php) и имени функции (jscript) под него
 
всем привет, подскажите, сделал компонент на битриксе, на странице планирую использовать его несколько раз - т.е. нужно обеспечить уникальность по ключам и обработке
делаю так, например

<?php
инициализирую уникальный ключ
$uid=uniqid();
...
использую уникальный ключ для составного id
<div id="<?=$uid?>_hover_byDir" uk-dropdown="mode: hover; ">
...
?>


<script>
передаю уникальный ключ в скрипт
var uid="<?=$uid?>";

пытаюсь оформить составное имя функции под составной id
$('#' + uid + '_hover_byDir').on('beforehide', function () {....

</script>


функция не срабатывает (имя в таком виде не воспринимается) - подскажите как правильно оформить функцию из переменной для данного случая?

laimas 12.07.2017 10:37

В id можно объединять через дефис, нижнее подчеркивание, точкой, но не пробелом, это в именах классов они доступны.

ef1 12.07.2017 11:31

сори, - кеш не сбросил, тему закрываю :agree:
ps
Спасибо!

ef1 12.07.2017 11:43

хотя, если продолжить по уникальности - еще один вопрос

допустим я использую компонент два раза на странице - уникальность по селекторам для php и обработчикам jscript есть

а как поступать с переменными в jscript? - (я еще не совсем в теме)
когда смотрю код страницы вижу два идентичных блока <script> в каждом из которых, например, используется структура с одним и тем же именем например
var str_href = {
		sort_byDir:"asc",
		sort_byName: "Наименование"
	}

она (str_href) в рамках страницы (в рамках одного из блоков script) будет локальной? или глобальной для всей страницы (использоваться по первому включению) и ее нужно тоже модифицировать с уникальным ключом?

Manyasha 12.07.2017 12:06

ef1,
Цитата:

Сообщение от ef1
она (str_href) в рамках страницы (в рамках одного из блоков script) будет локальной? или глобальной для всей страницы

А Вы проверьте)
<script>
var str_href = {
        sort_byDir:"asc",
        sort_byName: "Наименование"
    }
alert("0 " + str_href.sort_byDir);
</script>
<body>
	<script>
	alert("1 " + str_href.sort_byDir);
	</script>
</body>
<script>
alert("2 " + str_href.sort_byDir);
</script>

ef1 12.07.2017 12:26

глобальная, ясно, т.е. нужно разруливать через экземпляры класса содержащего эту структуру?

Manyasha 12.07.2017 12:52

Не знаю, кода маловато...
Может так пойдет?
<script>
var str_href = [];
</script>

<script>
str_href.push({
        sort_byDir:"asc0",
        sort_byName: "Наименование"
    });
alert(JSON.stringify(str_href));
</script>
<body>
	<script>
	str_href.push({
			sort_byDir:"asc1",
			sort_byName: "Наименование"
		});
	alert(JSON.stringify(str_href));
	</script>
</body>
<script>
str_href.push({
        sort_byDir:"asc2",
        sort_byName: "Наименование"
    });
alert(JSON.stringify(str_href));
</script>

ef1 12.07.2017 13:31

как вариант, но не очень красиво :)
в любом случае - Спасибо! (ушел читать мануал по jscript)


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