Как получить атрибут 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
чтобы идентификаторы остались такими же, как вы их набрали: