我寫了一個綁定到頁面上8個元素的jQuery插件,我想用.live()將點擊操作綁定到鏈接在每個元素中。當你點擊鏈接時,它應該使用ajax發佈一個表單。問題是所有8個元素的所有鏈接都提交頁面上第一個元素的表單。當我使用.click()時,一切正常。我寧願使用.live(),因爲我將動態添加更多元素。jQuery .live('click')只綁定頁面上的第一個元素
這是類似於我在做什麼一些代碼:
var $container = $(this);
var $form = $container.find('form.some_form');
var $button = $container.find('a.some_link');
這隻會提交表單的第一個元素:
$button
.live('click', function() {
// some code that submits $form via ajax
});
然而,這總是提交正確的表格:
$button
.click(function() {
// identical code that submits $form via ajax
});
有什麼關於.live(),我應該知道嗎?難住了。
這將解釋奇怪的行爲:)在這種情況下,我沒有看到任何使用.live()替換.click()的好方法...猜猜我插入新元素後插入新元素DOM,當然不是世界的盡頭。 – a10s 2009-10-28 03:45:03
你應該能夠通過連接容器的ID(假設它有一個)和你想要的元素/類來構造一個選擇器。例如,如果您的容器的ID爲「myDiv」,那麼您可以執行$(「#myDiv> a.some_link」)。live()。您可能需要通過執行類似「#」+ this.id +「> a.some_link」的方式來構建該選擇器字符串,但這應該是可能的。 – 2009-10-28 13:12:35