2011-05-26 17 views
0

javascript/jQueryを使用してクリックをシミュレートできるように、マスターページによって変更されたasp:LinkBut​​tonのIDを取得するにはどうすればよいですか?jQueryでhref属性を取得する方法

通常は、これで、私は「_id」の値として「ctl05_butSaveAssociation」を得るだろう:私たちが使用して見ることができるよう

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

これは、何らかの理由で再びIDが変わるので、動作しません。放火犯とASPの上にマウスを移動:LinkBut​​tonコントロール我々は持っている:

function ClickSaveButton() { 
     var _id = "ctl05$butSaveAssociation";  // hardcoded 
     __doPostBack(_id, ''); 
     return false; 
    } 
:私は右のIDをハードコーディングしている場合

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

だから実際には、それはで動作します

これをjQueryを使って動的に実装するにはどうすればよいですか?

+0

...' $ =は 'それを作る必要があります。 StackOverflowにコードを正しくコピーしていますか? – Domenic

+0

どこに 'SaveAssociation'メソッドがありますか? – hunter

+0

はい私は確信しています。上の2番目の抜粋を見て、ポストバックがパラメータで送信しているものを見て、アンダースコアの代わりにドル記号を確認してください!それは問題です... –

答えて

1

HTML生成IDは_ClientIDプロパティに基づいて生成されているため)ですが、AS P.NETヘルパーメソッドは、$を想定しています。すべての場合にアンダースコアを使用できない理由はわかりませんが、それは...

ただ簡単なものは_id.replace("_", "$")のように置き換えています。完全なコード:

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

私はここに考えています...なぜあなたはちょうどクリックイベントを呼び出さないのですか?それは `あなたのコントロールはまだありませんその_end with_` "butSaveAssociationを" `、id`sで` `sのを選択するように

あなたの元のコードは動作するはずです
function ClickSaveButton() { 
    $('a[id$="butSaveAssociation"]').click(); 
    return false; 
} 
+0

素晴らしい!それが問題を解決しました!私が単純にクリックイベントを使用したのは、クリックイベントがクライアント側でのみ動作しているように見えることで、.ascxコントロールは変更が加えられたページをリロードしますが、すぐにページを更新すると、データベースに何も保存されないため、変更は失われます。これが私がサーバーへのポストバックを行うことを考えた理由です。 –

0

1つの方法は、<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の変更だ場合でも、ボタンを識別するための方法を与えるだろう。

関連する問題