存储JQuery变量的最佳方法是什么?

时间:2011-12-07 15:40:24

标签: javascript jquery html xhtml

我只想了解一下存储变量以供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 个答案:

答案 0 :(得分:8)

您可以使用jQuery data方法将任意数据附加到元素。在你的情况下,如果我已经理解你正在尝试做什么,你可能想要做这样的事情:

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

在寻找有效的XHTML解决方案时,您无法使用HTML5 data-*属性。如果是这种情况,您可以直接在元素上添加属性值(正如您在示例中使用value属性所做的那样)。

data方法不需要在元素上显示相应的data-*属性,因此这仍然允许您编写有效的XHTML。

答案 1 :(得分:2)

如果你挖掘HTML5,你应该去找数据属性。

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

答案 2 :(得分:1)

在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');
  // ...
});

答案 3 :(得分:1)

也许使用rel属性,并使用.attr()方法在jQuery中获取它。

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

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