我正在从websforms转换到asp.net mvc,我有一个问题。
我有一个动态生成链接的循环,其中picNumberLink是循环中的变量,而image是可变图像链接。
我想避免将javascript操作内联,因此在我的webforms项目中执行以下操作:
hyperLink.Attributes.Add("onclick", "javascript:void(viewer.show(" + picNumberlink + "))");
在asp.net mvc中使用jquery的等价物是什么?
我见过使用$(document).ready事件附加点击的示例,但我无法弄清楚将picNumberLink变量传递到javascript函数的语法。
建议?
答案 0 :(得分:7)
编辑:如果您使用此表单的ID生成链接:
<a id="piclink_1" class="picLinks">...</a>
<a id="picLink_2" class="picLinks">...</a>
$('a.picLinks').click(function() {
//split at the '_' and take the second offset
var picNumber = $(this).attr('id').split('_')[1];
viewer.show(picNumber);
});
答案 1 :(得分:1)
var functionIWantToCall = function(){
var wrappedLink = $(this);
//some serious action
}
//this should be called on document ready
$("#myLinkId").click(functionIWantToCall);
如果您需要获取图片的网址,请将其保存在anchor`s href:
中var functionIWantToCall = function(event){
event.preventDefault(); //this one is important
var link = $(this).attr('href');
//some serious action
}
答案 2 :(得分:1)
$(document).ready(function()
{
$('#LinkID').click(function() {
viewer.show($(this).attr('picNumber'));
});
});
您可以将名为picNumber的属性添加到您的超链接标记中,并将此设置为您的mvc视图
视图中的链接可能如下所示:
<%= Html.ActionLink("Index", new { id = "LINKID", picNumber = 1 }) %>
答案 3 :(得分:1)
假设您能够更改输出的HTML,是否无法将picNumberLink置于id
或class
属性中?
HTML:
<a href="..." id="piclink-242" class="view foo-242"><img src="..."/></a>
jQuery的:
$(function() {
// using the id attribute:
$('.view').click(function() {
viewer.show(+/-(\d+)/.exec(this.id)[1]);
});
// or using the class attribute:
$('.view').click(function() {
viewer.show(+/(^|\s)foo-(\d+)(\s|$)/.exec(this.className)[2]);
});
}}