2010-10-29 105 views
1

我不得不通過在JavaScript中的所有項目類似幫助AJAX和HTML

<div class="menu"> 
    <div>Latest</div> 
    <div>Oldest</div> 
</div> 

我環路的HTML代碼,並在它們綁定click事件偵聽器。現在在事件回調中,我想知道通過AJAX獲取哪些數據。我如何從一個項目中得出結論?我知道我應該在物品中加入一些東西來確定物品的類型,但是我在哪裏放?

+0

你不能給每個div的ID和使用,以確定應被檢索什麼信息?我認爲你想調用一個單一的服務器端腳本,並希望傳入一個參數?另外,將菜單標記爲列表而不是很多div會更加語義化。 – 2010-10-29 08:57:29

回答

5

如果你只使用div S,使用className將是方便和有效。就像這樣:

<div class="menu"> 
    <div class="latest">Latest</div> 
    <div class="oldest">Oldest</div> 
</div> 

... 

function divClickHandler(event) { 
    var div = event.target; 
    if (div.className == 'latest') 
    // load latest 
    else if (div.className == 'oldest') 
    // load oldest 
} 

如果您使用HTML5,一個更好的解決辦法是使用custom data- attributes;像這樣:

<div class="menu"> 
    <div data-type="latest">Latest</div> 
    <div data-type="oldest">Oldest</div> 
</div> 

最優雅的解決辦法是使用a標記而不是div S和攔截他們點擊:

<div class="menu"> 
    <a href="?whatever">Latest</a> 
    <a href="?barfoo">Oldest</a> 
</div> 

... 

function aClickHandler(event) { 
    var a = event.target; 
    // do your ajax call using a.href 
    return false; 
} 
0

我不是100%確定你在問什麼。但是,如果您希望將「用戶數據」放在元素上,您可以只使用一個屬性並在JavaScript中選擇屬性。

<div class="menu"> 
    <div userdata="Latest">Latest</div> 
    <div userdata="Oldest">Oldest</div> 
</div> 
+0

這樣做時,請使用符合HTML 5的'data- ...'屬性。 – 2010-10-29 08:59:35

1

你可以通過class和id指定。例如。

<div class="menu"> 
    <div class="latest">Latest</div> 
    <div class="oldest">Oldest</div> 
</div> 

在循環中用element.className進行測試。

0

指定您所指的是什麼樣的元素會是有益的。

但是,您可以從其ID識別一個元素。或者你可以指定你自己的屬性並檢索它。

例子:

HTML:

<button id='mybtn' attr1='123'>click here</button> 

的javascript:

$("#mybtn").bind('click', function() { 

    var attr = $(this).attr('attr1'); 

    // use attr value for any specific logic 

});