2011-05-26 134 views
0

我將如何獲得已被主頁面修改的asp:LinkBut​​ton的ID,以便我可以使用javascript/jQuery來模擬點擊?如何使用jQuery獲取href屬性

通常情況下,這一點,我會得到「ctl05_butSaveAssociation」爲「_id」的值:

function ClickSaveButton() { 
     var _id = $('a[id$="butSaveAssociation"]').attr("ID");   
     __doPostBack(_id, ''); 
     return false; 
    } 

這是不行的,因爲再ID改變出於某種原因,我們可以看到使用螢火併懸停在ASP:LinkBut​​ton的有:

<a style="border-style: none; display: inline-block;" href="javascript:__doPostBack('ctl05$butSaveAssociation','')" class="CommandButton" id="ctl05_butSaveAssociation" onclick="SaveAssociation();" tabindex="0">Save</a> 

所以,事實上,如果我硬編碼正確的ID,它適用於:

function ClickSaveButton() { 
     var _id = "ctl05$butSaveAssociation";  // hardcoded 
     __doPostBack(_id, ''); 
     return false; 
    } 

我怎樣才能實現這動態使用jQuery?

+0

「SaveAssociation」方法在哪裏? – hunter 2011-05-26 13:54:59

+0

是的,我確信。請看頂部的第二個摘錄,看看回傳在參數中發送的內容,注意美元符號而不是下劃線!這是問題... – 2011-05-26 13:58:50

回答

1

雖然HTML生成的ID有_(因爲基於ClientID屬性生成),但AS P.NET輔助方法預計$。我真的不知道爲什麼它不能在所有情況下使用下劃線,但這是它...

一個簡單的事情就是使用替換像_id.replace("_", "$")。完整的代碼:

function ClickSaveButton() { 
    var _id = $('a[id$="butSaveAssociation"]').attr("id"); 
    __doPostBack(_id.replace("_", "$"), ''); 
    return false; 
} 

但我在這裏想...爲什麼你只是不打電話點擊事件?

function ClickSaveButton() { 
    $('a[id$="butSaveAssociation"]').click(); 
    return false; 
} 
+0

太棒了!這解決了問題!我沒有簡單地使用click事件(這就是我最初嘗試的)的原因是click事件似乎只在客戶端工作,.ascx控件會在頁面上重新加載完成更改,但儘快當您刷新頁面時,更改將會丟失,因爲沒有任何內容會保存到數據庫中。這就是爲什麼我想要做一個PostBack到服務器。 – 2011-05-26 14:18:16

0

一種方法是在其周圍放置一個<span>。事情是這樣的:

<span id="button"> 
    <a style="border-style: none; display: inline-block;" href="javascript:__doPostBack('ctl05$butSaveAssociation','')" class="CommandButton" id="ctl05_butSaveAssociation" onclick="SaveAssociation();" tabindex="0">Save</a> 
</span> 

然後在你的jQuery

var id = $('span[id="button"]').children().attr('id'); 

這會給你一個方法來識別按鈕,即使它的ID變化。