【发布时间】:2014-05-12 09:32:35
【问题描述】:
我在 asp.net 中使用 jQuery 更改链接文本的代码存在问题。奇怪的是:我必须点击四次才能正常工作,然后我的链接会改变。谁能告诉我这种奇怪行为的原因是什么?任何缓存问题?
这是我在 asp.net 中的代码:
<asp:GridView ID="gvSurveys" runat="server" AutoGenerateColumns="false" CssClass="ChildGrid" RowStyle-CssClass="aspBoundField" Width="100%">
<Columns>
<asp:TemplateField HeaderStyle-CssClass="aspBoundField_Header" ItemStyle-CssClass="aspBoundField" HeaderText="Lieferant">
<ItemTemplate>
<a href="javascript:void(0)" class="linkfield" id="surveyListSupplierLink_<%# Eval("ID") %>" onclick="document.getElementById('surveyList').style.display='none'"><%# Eval("Lieferant.Name") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-CssClass="aspBoundField_Header" ItemStyle-CssClass="aspBoundField" HeaderText="Fragebogenkatalog">
<ItemTemplate>
<a href="javascript:void(0)" class="linkfield" id="surveyListCatalogueLink_<%# Eval("ID") %>" onclick="document.getElementById('surveyList').style.display='none'"><%# Eval("Fragebogenkatalog.Name") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-CssClass="aspBoundField_Header" ItemStyle-CssClass="aspBoundField" HeaderText="Status">
<ItemTemplate>
<!-- This is where the changes should happen: -->
<a href="javascript:void(0)" class="linkfield" id="surveyListStatusLink_<%# Eval("ID") %>" onclick="document.getElementById('surveyList').style.display='none'"><%# Eval("Status_Text") %></a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我的 JavaScript / jQuery 来了:
$("#surveyListStatusLink_" + surveyData.Id).html(surveyData.StatusText);
所以基本上我想要发生的是,当某个事件被触发时(在这种情况下是点击我的链接),应该更改链接标题。 一切正常,我像这样绑定点击事件:
<script type="text/javascript">
$(document).on("click", ".linkfield", function () {
numberStart = $(this).attr("id").indexOf("_") + 1;
SelectedId = $(this).attr("id").substring(numberStart, $(this).attr("id").length);
LoadData(SelectedId);
$("#fade").fadeIn(300, "swing", function () { $("#surveyForm").fadeIn(200); });
})
</script>
包含 jQuery 语句的 LoadData 函数:
function LoadData(id) {
$.ajax({
type: "POST",
url: "SurveyList.aspx/GetData",
data: '{surveyId: "' + id + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnLoadDataSuccess,
failure: function (response) {
alert(response.d);
}
});
}
function OnLoadDataSuccess(response) {
if (response.d.substring(0,5) == "Error")
alert(response.d);
else {
surveyData = jQuery.parseJSON(response.d);
$("#surveyFormTitle").html(surveyData.Supplier.Name); // Note: this shows up properly!
$("#surveyListStatusLink_" + surveyData.Id).html(surveyData.StatusText); // This doesn't...
}
}
当我调试它时,我可以看到 html 值已正确更改,但问题来了: 它不会显示在浏览器中。它没有显示任何变化,我不太确定我做错了什么。
我已经尝试过的事情:
在标题上使用 .attrib() 函数
在链接上使用 .fadeOut() 函数
在链接元素上使用 .text() 函数
...但仍然:没有可见的变化。
那么谁能告诉我是什么问题以及我如何解决它?
提前致谢!
【问题讨论】:
-
点击链接时事件是否正确触发?如果是这样,我认为您可以将 $("#surveyListStatusLink_" +surveyData.Id) 替换为 $(this)。我会尝试 $(this).text("blah") 只是看看它是否有效。我知道您已经尝试过 .text,但可能选择了错误的项目。
-
您好,谢谢您的回复!事件正确触发。奇怪的是,它在单击链接 4 次后起作用。无论如何,我会尝试你的建议。
标签: javascript jquery asp.net text hyperlink