Как получить атрибут href с помощью jQuery

Как я могу получить идентификатор asp:LinkButton, который был изменен главной страницей, чтобы я мог имитировать щелчок, используя javascript/jQuery?

Обычно, с этим, я получил бы 'ctl05_butSaveAssociation' как значение для '_id':

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

Это не работает, потому что идентификатор по какой-то причине снова меняется, как мы видим, используя FireBug и наведя курсор мыши на asp:LinkButton:

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

Так что на самом деле, если я жестко закодирую правильный идентификатор, он работает с:

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

Как я мог реализовать это динамически, используя jQuery?

3 ответа

Решение

В то время как HTML-идентификаторы имеют _ (потому что генерируются на основе 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;
}

Одним из способов было бы разместить <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');

Это даст вам возможность идентифицировать кнопку, даже если ее идентификатор изменяется.

Если вы находитесь в ASP.NET 4 или выше, вы можете использовать ClientIDMode чтобы идентификаторы остались такими же, как вы их набрали:

Другие вопросы по тегам