2012-05-10 60 views
4

這看起來很簡單,但我幾乎沒有使用jQuery的經驗,我無法圍繞它進行打包。將參數傳遞給jQuery函數?

比方說,我有一個動態生成HTML表,該表的每一行中是鏈接:

<a id='edit'>Edit User</a> 

現在,鏈接應該調用每個用戶的ID作爲參數的函數。我可以這樣做內聯這個:

<a id='edit' onClick='editUser(<?php echo $row['id']; ?>)'>Edit User</a> 

但我怎麼在jQuery中做到這一點?

我可以調用該函數是這樣的:

$('a#edit').click(function() { 
     editUser() 
     return false; 
    }); 

但是我怎麼通過ID來這個功能呢?我知道我可以先將它粘到一個隱藏的領域,然後通過元素id從那裏獲得它,但是肯定有更好的方法嗎?

我意識到所有的鏈接都會有這樣的id,所以我應該通過追加用戶id來動態創建鏈接ID?但那我該如何調用jQuery?

回答

8

ids在整個HTML中必須是唯一的。所以,你可以使用類選擇器和HTML5數據 - *屬性:

<a class="edit" data-id="<?php echo $row['id']; ?>">Edit User</a> 

然後:

$('a.edit').click(function() { 
    var id = $(this).data('id'); 
    // do something with the id 
    return false; 
}); 
+0

謝謝,完美的作品。 – jovan

2

使用data-*屬性來傳遞參數。

<a class='edit' data-id='<?php echo $row['id']; ?>'>Edit User</a> 

$('a.edit').click(function() { 
    editUser($(this).data("id")); 
    return false; 
}); 
+0

我想值得一提的是data-id只是HTML5。如果您將其與HTML4 DOCTYPE一起使用,您將會遇到驗證錯誤。 – psynnott

0

正如科特mentionned的data-id是去,如果你使用HTML5的方式。如果您使用HTML4,我會在鏈接的ID通過這樣的:

<a id='edit-321' class='edit'>Edit User</a>

然後你就可以做到這一點(和使用event.preventDefault()而非return false!):

$('a.edit').click(function (evt) { 
    editUser($(this).attr("id").substring(5)); 
    evt.preventDefault(); 
});