Лучший способ хранить переменные JQuery? - PullRequest
1 голос
/ 07 декабря 2011

Я просто хочу немного подумать о хранении переменных для использования JQuery.

Пример

Здесь JQuery будет использовать значение скрытого ввода video_id, а затем voteupвидео от video_id.

 <form class='voteup' action='' method='post'>
   <input type="hidden" name='video_id' value='<?php echo $video_id; ?>' />
   <input type='submit' value='Vote Up' />
 </form>

Примечание. Это всего лишь пример.

Но что, если я хочу, чтобы ссылка делала то же самое?Где бы я мог хранить video_id?

Очевидно, я мог бы хранить video_id в атрибуте class, но я не думаю, что это лучший способ, особенно если мне нужно было отправитьболее одной переменной.

Есть идеи по этому поводу?

Я должен упомянуть, что я ищу только допустимые способы XHTML.

Ответы [ 4 ]

8 голосов
/ 07 декабря 2011

Вы можете использовать метод jQuery data для присоединения произвольных данных к элементу. В вашем случае, если я понял, что вы пытаетесь сделать правильно, вы, вероятно, захотите сделать что-то вроде этого:

$(document).ready(function() {
    $("#yourLink").data("video_id", "<?php echo $video_id; ?>");
});

Поскольку вы ищете допустимые решения XHTML, вы не можете использовать атрибуты HTML5 data-*. Если это так, вы можете добавить значение атрибута непосредственно к элементу (как вы сделали с атрибутом value в вашем примере).

Метод data не требует наличия соответствующего атрибута data-* для элемента, поэтому это все равно позволит вам написать действительный XHTML.

2 голосов
/ 07 декабря 2011

Если вы копируете HTML5, вам нужно перейти к атрибуту данных.

http://ejohn.org/blog/html-5-data-attributes/

1 голос
/ 07 декабря 2011

Возможно, используйте атрибут rel и захватите его в jQuery, используя метод .attr().

var myVar = $('#link_id').attr('rel');

http://api.jquery.com/attr/

1 голос
/ 07 декабря 2011

На странице HTML 5 вы можете использовать атрибуты "data-" для таких вещей:

<img src='http://placekitten.com/100/100' data-video-id='whatever'>

Тогда из jQuery:

$('img').click(function() {
  var video = $(this).data('video-id'); // 'videoId' also works here
});

Если вы (трагически) застряли со строгим XHTML, ну, вы застряли. Я думаю, что для тега <a> вы могли бы использовать атрибут rel. Вообще «класс», вероятно, на самом деле то, что нужно делать. Соглашение, которое я использовал для пар «имя-значение» в «классе», - разделять их двоеточием, а затем извлекать их через регулярное выражение:

<sometag class='whatever videoId:video22 something'>

и затем:

$('sometag').click(function() {
  var videoId = this.className.replace(/videoId:(\S*)/, '$1');
  // ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...