我如何能够获取主页修改的asp:LinkButton的ID,以便我可以使用javascript / jQuery模拟点击?
通常情况下,我会获得'ctl05_butSaveAssociation'作为'_id'的值:
function ClickSaveButton() {
var _id = $('a[id$="butSaveAssociation"]').attr("ID");
__doPostBack(_id, '');
return false;
}
这不起作用,因为ID会因某种原因再次发生变化,因为我们可以看到使用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>
事实上,如果我对正确的ID进行硬编码,则可以使用:
function ClickSaveButton() {
var _id = "ctl05$butSaveAssociation"; // hardcoded
__doPostBack(_id, '');
return false;
}
我怎样才能使用jQuery动态实现它?
答案 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)
如果您使用的是ASP.NET 4或更高版本,则可以使用ClientIDMode
使ID与您输入的ID保持一致: