2009-08-13 2 views
4

Я конвертирую из websforms в asp.net mvc, и у меня есть вопрос.jquery добавление события onclick в ссылку href

У меня есть цикл, который генерирует ссылки динамически, где picNumberLink - это переменная в цикле, а изображение - это ссылка на переменные изображения.

я хочу, чтобы избежать ввода JavaScript действия рядный так в моем проекте WebForms это сделал следующее:

hyperLink.Attributes.Add("onclick", "javascript:void(viewer.show(" + picNumberlink + "))"); 

, что является эквивалентом с помощью JQuery в ASP.NET MVC?

Я видел примеры использования события $ (document) .ready для прикрепления по кликам, но я не могу понять синтаксис для передачи переменной picNumberLink в функцию javascript.

Предложения?

ответ

7

EDIT: Если вы создаете свои ссылки с 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); 
}); 
+0

где picNumberLink исходит из того, что это переменная? – leora

+0

@me - это имеет смысл теперь? – karim79

+0

Возможно, это моя проблема/вопрос. У меня просто есть изображение, так где я могу засунуть picNumber, чтобы я мог его захватить из javascript? я не показываю текст – leora

1
var functionIWantToCall = function(){ 
    var wrappedLink = $(this); 
    //some serious action 
} 

//this should be called on document ready 
$("#myLinkId").click(functionIWantToCall); 

Если вам нужно получить URL картины, держать его в anchor`s HREF:

var functionIWantToCall = function(event){ 
    event.preventDefault(); //this one is important 
    var link = $(this).attr('href'); 
    //some serious action 
} 
+0

мой вопрос вокруг, как я могу иметь яваскрипт ПОС до переменной picNumberLink теперь его не встраивать – leora

+0

Добавьте его в скрытое поле рядом ссылку , тогда - в функцииIWantToCall используйте «var picNumberLink = wrappedLink.next(). val()» –

+0

, которые кажутся kluge, но если нет более элегантного способа, то спасибо за идею. что бы было синтаксисом, просто регулярный скрытый html-тег – leora

1
$(document).ready(function() 
{ 

$('#LinkID').click(function() { 
    viewer.show($(this).attr('picNumber')); 
}); 

}); 

Вы можете добавить атрибут picNumber к своему тегу гиперссылки и установить это ваше представление mvc

Ссылка на ваш взгляд, может выглядеть следующим образом:

<%= Html.ActionLink("Index", new { id = "LINKID", picNumber = 1 }) %> 
+1

$ (document) .ready (function() {}) может быть сокращено до $ (function() {}) –

+0

для этой работы, мне нужно следующее leora

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]); 
    }); 
}}
+0

Просто понял, что это очень похоже на ответ karim79 ... Я думаю, что мы нужно видеть HTML * * * – searlea

Смежные вопросы