Как получить атрибут href с помощью jQuery - PullRequest
0 голосов
/ 26 мая 2011

Как я могу получить идентификатор 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 ]

1 голос
/ 26 мая 2011

Хотя идентификаторы, созданные в HTML, имеют _ (поскольку генерируются на основе свойства ClientID), вспомогательные методы ASP.NET ожидают $. Я действительно не знаю точно, почему он не может использовать подчеркивание во всех случаях, но это все ...

Одна простая вещь - просто использовать замену, как _id.replace("_", "$"). Полный код:

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

Но я тут думаю ... Почему вы просто не вызываете событие click?

function ClickSaveButton() {
    $('a[id$="butSaveAssociation"]').click();
    return false;
}
0 голосов
/ 26 мая 2011

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

0 голосов
/ 26 мая 2011

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

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

...