2011-12-07 110 views
1

我只想獲得一些關於爲JQuery的使用存儲變量的想法。存儲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有效的方法。

+7

'$( 「A」)的數據( 「VIDEO_ID」)' - 見http://api.jquery.com/data/ –

+2

@RobW你有這麼大的名聲已經是您不需要將其作爲實際答案發布? ;-) –

+0

感謝羅布,我會看看這個。 –

回答

8

您可以使用用於將任意數據附加到元素的jQuery data方法。在你的情況,如果我理解你想要正確地做什麼,你可能想要做這樣的事情:

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

當你正在尋找有效的XHTML的解決方案,你不能使用HTML5 data-*屬性。如果是這樣的話,你可以直接在元素上添加屬性值(就像你在示例中用value屬性所做的那樣)。

data方法不需要相應的data-*屬性出現在元素上,所以這仍然允許您編寫有效的XHTML。

+0

這是非常正確的,但有時能夠將行爲代碼中的標記完全分開是很好的做法。這就是爲什麼在標記中包含相關的附屬屬性是有用的。 – Pointy

+0

同意,但沒有能力使用'data- *'屬性,你沒有多少選擇。正如你所提到的,你可以使用'rel',但這不是很好的語義。我想這取決於他們更喜歡的OP。 –

1

在HTML 5頁的,你可以使用 「數據 - 」 屬性之類的東西:

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

無論文檔類型如何,'data-'屬性都可以工作。 –

+1

@NathanAnderson - 他們工作,但他們無效。 –

+0

@NathanAnderson是的,但他們不符合嚴格的XHTML。換句話說,如果您希望驗證代碼,則不能在XHTML中使用任意屬性。 – Pointy

1

也許使用rel屬性,並使用.attr()方法在jQuery中抓取它。

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

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

相關問題