#php #javascript #jquery #html #variables
#php #javascript #jquery — запрос #HTML #переменные #jquery
Вопрос:
Я пытаюсь изолировать свой HTML от моего js, заменив следующее
<div id = "foo" onclick="bar(variable)"></div>
с
<div id = "foo"></div>
$(document).ready(function() {
$("#foo").click(function(event) {
bar(???);
});
});
Теперь, какой был бы хороший способ передать параметр для bar()
.
Должен ли я объединить его с каким-нибудь идентификатором элемента? Или я должен объявить его как переменную JS с помощью PHP при загрузке страницы? Или есть способ получше?
Комментарии:
1. в чем значение 29?
2. @IAbstractDownvoteFactory это навязчиво…
3. ПРАВКИ — рассмотрим любую переменную вместо 29
Ответ №1:
Вы можете поместить атрибут в сам элемент и получить его из обработчика щелчков.
<div id="foo" data-item="29"></div>
$(document).ready(function() {
$("#foo").click(function(event) {
bar($(this).data("item"));
});
});
Конечно, если у вас есть только один из них, вам не нужно абстрагировать номер данных, вы можете просто сделать это следующим образом:
$(document).ready(function() {
$("#foo").click(function(event) {
bar(29);
});
});
Но, я думаю, мы все предполагали, что вы хотите, чтобы 29 исходили из разметки, чтобы вы могли использовать общий обработчик щелчков для многих элементов. Если это так, то первый метод выполняет это.
Комментарии:
1. да, это html 5, но люди использовали этот метод задолго до спецификации html5. это недопустимый html, но он работает. помните, что спецификация html5 основана на том, как люди нарушали правила и что люди часто делали. Если вы хотите, чтобы это был действительный html, добавьте его в атрибут class. это наиболее часто используемый метод.
2. Как вы думаете, в каком браузере это не работает? Соглашение об использовании «data-» перед пользовательскими атрибутами — это соглашение, предложенное для HTML5 для предотвращения конфликтов между пользовательскими атрибутами и стандартными атрибутами, но, похоже, оно отлично работает для меня в старых браузерах.
Ответ №2:
Просто — если вы получаете переменную с помощью php:
<div id="foo"></div>
$(document).ready(function() {
$("#foo").click(function(event) {
bar( <?= $variable ?> );
});
});
Ответ №3:
Я бы предложил атрибут data, как предлагали другие. Это недопустимый html, но он работает во всех браузерах, которые используются сегодня …
люди, которые предпочитают писать допустимый код (в данном случае не я), любят добавлять данные в атрибут класса или просто устанавливают его в javascript.
Ответ №4:
Вы могли бы сохранить параметр как атрибут данных:
<div id="foo" data-bar="29"></div>
$(document).ready(function() {
$("#foo").click(function(event) {
bar($(this).data('bar'));
});
});
Ответ №5:
Большинство людей думают, что им нужны параметры для определения местоположения элементов, которые являются подэлементом или элементом с известным путем от элемента, на который был нажат. Для такого рода вещей лучше всего вообще не использовать параметр, а пройти по DOM с узла, на который был нажат, чтобы найти соответствующий элемент.
$("#foo").click(function(event) {
var doSomethingTo = $(this).find('div')[0];
doSomethingTo.hide();
});