我使用了asp.net转发器来重复图像。
我希望在通过jquery单击图像时获取从数据库返回的主键ID,但它显示未定义。我将图像存储在输入文本字段中,然后显示在该字段中但不在警报中。
jQuery的:
function displayStory() {
var txtIDValue = $(this).find('input[id$=txtID]').val();
var id = txtIDValue;
alert(id);
}
中继器:
<asp:Repeater ID="rptrImages" runat="server">
<ItemTemplate>
<div class="col-md-4">
<div class="thumbnail">
<input type="text" id="txtID" value='<%#Eval("ID")%>' />
<asp:ImageButton ID="imgButtonStory" OnClientClick='displayStory();return false;' runat="server" ImageUrl='<%# "UploadedImages/"+ Eval("Image") %>'
CssClass="img-responsive img-rounded" />
</div>
</div>
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:0)
this
不引用调用click事件处理程序的元素,它引用window
对象。您可以使用.call()
设置上下文
<asp:ImageButton ID="imgButtonStory" OnClientClick='displayStory.call(this);return false;' runat="server" ImageUrl='<%# "UploadedImages/"+ Eval("Image") %>'
CssClass="img-responsive img-rounded" />
在脚本中,您需要使用.prev()
,因为文本框不是ImageButton
var txtIDValue= $(this).prev('input[id$=txtID]').val();
//var txtIDValue= $(this).closest('div').find('input[id$=txtID]').val();
答案 1 :(得分:0)
function displayStory() {
var txtIDValue = $('input[id="txtID"]').val();
var id = txtIDValue;
alert(id);
}
$('input[id="txtID"]')
将找到元素<input type="text" id="txtID" value='whatYouAreTryingToFind' />
并为其创建一个jQuery选择器。
提示:
在jQuery中,事件的$(this)
范围可能很有趣,因此请务必确切地检查它返回的内容Scope and this in JavaScript。