如何使用jQuery获取href属性

时间:2011-05-26 13:31:45

标签: javascript jquery asp.net postback linkbutton

我如何能够获取主页修改的asp:LinkBut​​ton的ID,以便我可以使用javascript / jQuery模拟点击?

通常情况下,我会获得'ctl05_butSaveAssociation'作为'_id'的值:

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

这不起作用,因为ID会因某种原因再次发生变化,因为我们可以看到使用FireBug并将鼠标悬停在我们拥有的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动态实现它?

3 个答案:

答案 0 :(得分:1)

虽然HTML生成的ID具有_(因为基于ClientID属性生成),但ASP.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;
}

答案 1 :(得分: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发生变化,这也会为您提供识别按钮的方法。

答案 2 :(得分:0)