2010-01-26 88 views
0

鑑於我:將數據傳遞給jQuery的功能在服務器端

$("a.clickable").livequery('click', (function (e) { 
     var values = $(this).attr('id').split('_'); 
     $('#' + values[3]).load($(this).attr('href')); 
     e.preventDefault(); 
    })); 

你看,我想用類「點擊」所有的鏈接導致一個ajax負荷。然而,目標div卻有所不同,所以我只是簡單地將其和其他一些數據一起放入Id的鏈接: 「link_value1_value2_targetDivId」。

所以,我目前分裂的ID來獲得一個值的數組使用。 我知道*$(obj).data()*,但我需要在服務器端傳遞一些東西。

有沒有辦法實現這個沒有這個醜陋的id字符串解析? ASP.Net/MVC順便說一句。

回答

0

否您不能這樣做。所有觸發AJAX調用的操作都必須從客戶端完成,儘管有些方法可以使用反向AJAX或彗星將某些數據從服務器推送到客戶端,但這不是您要查找的內容。對於你的情況,你必須做那難看的邏輯。但是如果你不想解析它,你可以將id作爲數據/自定義屬性存儲在元素中,並使用它來代替解析。

+0

自定義屬性是幫助過我的關鍵字。我發現了一些關於這方面的很好的信息,在我的情況下,它優於data()。謝謝 – Steffen 2010-01-27 13:13:35

0

我希望我明白這個問題 - 有幾個,每個都與它的div有關。點擊後,操作相關的div。

我該怎麼做。在服務器端(在aspx文件),我會產生這樣的javascript代碼:

var mapAIdToDivId = new Array(); 
<% foreach(Item i in MyDivAndACollection) { %> 
    mapAIdToDivId['<%= i.AId %>'] = <%= i.DivId %>; 
<% } %> 

然後JS處理程序將

$("a.clickable").livequery('click', (function (e) { 
    $('#' + mapAIdToDivId[$(this).attr('id')]).load($(this).attr('href')); 
    e.preventDefault(); 
})); 
+0

謝謝你的回覆。這是我已經嘗試過的一種方法,但並不滿意 – Steffen 2010-01-27 13:16:39

相關問題