2010-03-08 54 views
1

問題:以下是我如何使用js傳遞數據。這是一個很好的方式去解決這個問題,或者我做錯了嗎?它確實有效,但我認爲...似乎......可疑的是,我的相對較低的JS技能。在使用Javascript動態生成鏈接中傳遞數據

我有一個自定義網格插件,可以生成數據網格。假設它會生成用戶名和他們的id#,角色,日期等行。

我希望能夠點擊每行中的「編輯」鏈接,彈出一個模式窗口來管理數據。也許改變用戶的角色。

網格由包裝在匿名函數中的代碼生成,而模式是由包裝在不同匿名函數中的代碼生成的。我需要使用該特定點擊行的正確數據填充模式。

我所做的是在鏈接中包含必要的數據作爲自定義屬性,點擊該鏈接來管理用戶的數據。生成的鏈接看起來是這樣的:

<a href="#" userrole="role1" userid="12345"> Manage </a>

所以點擊該鏈接將啓動模態窗口,然後我用一些jquery的搶屬性值和填充模式。一個例子:

首先,處理點擊的代碼(只是假設點擊處理程序和其他document.ready()的東西被分配......我只是爲了簡潔起見,但這是基於可正常工作的代碼) :

(function(){ 
    var EditUserClick = function(e) { 
     userRole = $(this).attr('userrole'); //assign some values 
     userId = $(this).attr('userid'); // assign some values 

     OpenEditUserModal(userRole,userId); 
    } 
}); 

其次,處理模式代碼:

//Public stuff so it's accessible to the click. 
var OpenEditUserModal; 

(function(){ 
    OpenEditUserModal = function(userRole,userId){ 
     //code to handle the modal window opening can go here 
     //populate the modal 
     $('#userRole').text(userRole); // let's say this is a text field 
     $('#userId').val(userId); //let's say this is a hidden form field 
    } 
}); 

那麼怎麼樣了?有沒有更好的方式來獲取這些數據,而不是將它分配給構成的鏈接屬性,並將它傳遞給下一個方法?歡迎任何其他建議......總是希望學習。

回答

1

如果您不關心通過驗證檢查和代碼正常工作的HTML文檔 - 保持原樣。符合標準的

作爲一個較少干擾,更多的方法,你可以把所有的東西到HREF屬性,簡單地解析上點擊鍵值對(see this question關於如何做到這一點的提示)。

<ul> 
<li><a href="index.html?foo=bar&id=1">first</a>/li> 
<li><a href="?foo=woo&id=2">second</a></li> 
</ul> 

瑣碎的JS此:

$('a').click(function(){ 
    var querystring = $(this).attr('search'); 
    //console.log(querystring); 

    // parse here and call OpenEditUserModal  
    return false; 
}); 
相關問題