2010-07-17 71 views
0

我正在使用jquery edit in place lib,並且在嘗試使用類選擇器選擇多個可編輯項目時遇到問題。jquery-in-place-editor pre post hooks?

我對元素數組調用editInPlace,所以我不必爲每個可編輯項目重複該調用。

我無法弄清楚如何將item id追加到url。我正在使用rails,所以我需要一個像tags/10

您知道如何動態更改每個可編輯項目的url或params嗎?我嘗試使用回調參數,但取消了ajax請求。

HTML:

<li class="tag" id="tag_1">bright light</li> 
<li class="tag" id="tag_2">soft light</li> 

的jQuery:

$('.tag').editInPlace({ 
    url:"/tags/" // NEED TO ADD THE ASSET ID TO THE URL example /tags/10 
}); 

回答

1

您可以使用.each(),像這樣:

$('.tag').each(function() { 
    $(this).editInPlace({ 
    url:"/tags/" + this.id.replace('tag_','') 
    }); 
}); 

這只是需要ID,並通過.replace()之前移除tag_部分追加它。

+0

爲什麼不只是做: '$( '標籤。 ')editInPlace({ URL: 「/標籤/」 + $(本).id.replace(' tag_', '');} 。 );' ?? – 2010-07-18 05:56:40

+0

我真的很抱歉輸入'$(this).id'(我只是複製/粘貼代碼)。它應該是'$(this).attr(id)'。另外,我認爲jQuery處理'this''總是指父功能,而不是窗口/文檔。無論如何,我想你的第二部分也許是對的。應該嘗試一下。感謝澄清。 – 2010-07-18 11:09:06

+1

@Shripad - 你說的正確,它*通常指*父函數......並且它也在這裏執行,父函數是'document.ready'處理程序。重要的是,只要調用'.plugin(option)'不會創建一個閉包,你仍然在*那個父函數中,而'.each()'確實創建了一個閉包,指的是你想要的元素:) – 2010-07-18 11:14:20