2009-05-19 49 views
5

我想爲我們的網站添加一些jQuery功能,其中一段標記會有一個點擊處理程序,這需要引起另一段標記上的操作,即A是一個觸發器對於B的操作沒有保證。所以我不能保證A和B的相對結構,所以我不能依賴jQuery選擇器,再加上每個唯一的A只需要與它的唯一對應B相關。關於jQuery,Metadata和XHTML合規性

什麼是就這種情況下采取的最佳方式達成共識?

選項1:誰在乎XHTML合規性,無論如何都被高估了。我們有未經培訓的網絡內容生產商能夠將標記注入到我們的網站,因此嚴格遵守XHTML將是一個夢想。只需編寫標記屬性並使用jQuery讀取它們的值。

Example: 
<div class="jquery-feature-trigger" actson="targetID">Trigger</div> 

選項2:使用屬性看起來像HTML,但實在不應該被用於這一目的。

Example: 
<div class="jquery-feature-trigger" rel="targetID">Trigger</div> 

方案3:像ASP.NET 4.0使用命名空間正着手做的事。

Example: 
<div class="jquery-feature-trigger" custom:actson="targetID">Trigger</div> 

如果您想推薦選3,我將不勝感激的鏈接,需要什麼來得到這個工作,因爲我真的不知道,如果一個DTD來進行或如何與其鏈接了。

選項4:堆棧溢出社區有一個更好的主意...... ???

回答

8

你可以調查jQuery Metadata plugin,可存儲在class屬性(或其他各種地方)JSON的元數據。例如:

<div class="jquery-feature-trigger { actson: 'targetID' }">Trigger</div> 
+0

這基本上是選項2 – kizzx2 2009-09-03 09:16:53

1

有沒有什麼方法可以將信息存儲在jQuery數據方法中?保存塞滿了標記

有關示例看到這裏

snipplr.com/view/9715/the-jquery-data-store/

或直接文檔

docs.jquery。 com /核心/數據#名稱

我已經使用它幾次存儲有關我的元素的信息,非常有用的功能,似乎並不知道廣泛!

對不起不能發佈鏈接我是一個新用戶:(

1

試試這個:

<html> 
<head> 


    <script src="scripts/jquery/jquery-1.2.6.min.js" type="text/javascript"></script> 
    <!--Using highlight effect to illustrate-->  
    <script src="scripts/jquery/jquery-ui-highlight.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $(".jquery-feature-trigger").click(function(){ 
      $("#target-" + $(this).attr("id")).effect("highlight", {}, 6000); 

     }); 
}); 
</script> 

</head> 

<body> 

<div class="jquery-feature-trigger" id="1">Trigger 1</div> 
<div class="jquery-feature-trigger" id="2">Trigger 2</div> 
<div class="jquery-feature-trigger" id="3">Trigger 3</div> 
<div class="jquery-feature-target" id="target-1">Target 1</div> 
<div class="jquery-feature-target" id="target-2">Target 2</div> 
<div class="jquery-feature-target" id="target-3">Target 3</div> 

</body> 
</html> 

所以我決定給目標的div id爲「目標-X」,給觸發的div id爲「X」,這樣,當你觸發單擊X會影響目標「目標-X」。

注意去

$("#target-" + $(this).attr("id")) 

它在這一點上,你得到被點擊的div的id,並將其連接到「target-」,併成爲目標div的id。

0

那麼用適當的名稱和ID放入你的div隱藏的輸入是什麼?這樣你可以保持XHTML清晰。 所以,你會使用這樣的:

$("div_name").find("hidden_input_name").val() 
0

我不知道究竟你在做什麼,但將有可能使觸發器是一個錨標記,然後給目標的ID?像這樣:

<a href="#target1">Trigger 1</a> 
<div id="target1">Target 1</div> 

然後,您可以使用jQuery通過查看href屬性來查找目標的id。

如果觸發器1隱藏或顯示目標1或向下滾動到該目標,則此方法將具有額外的好處,即在禁用JavaScript的情況下仍然可以執行某些操作。

6

我會用data- attributes這個現在,儘管XHTML合規的,是這樣的:

<div class="jquery-feature-trigger" data-actson="targetID">Trigger</div> 

這些都是一個HTML5功能,但不會引起HTML4/XHTML比不是有效的其他任何問題,驗證程序中的屬性......但沒有實際問題導致此結果。

jQuery也在.data()方法has added built-in support for these since jQuery 1.4.3

+0

參見[HTML 5數據 - 屬性](http://ejohn.org/blog/html-5-data-attributes/)作者:John Resig – 2010-10-26 03:10:51