2015-07-31 5 views
1

(Привет Dr.Nick)Как отличить авто сгенерированные ссылки с JavaScript?

Я довольно новыми для JavaScript и до сих пор я пытаюсь создать сайт с asp.net EF JavaScript и так далее ...

Я genereated ссылки из информация, которую у меня есть в моей базе данных, и я хочу, чтобы имя этой ссылки отображалось в моем текстовом поле, но, как вы можете видеть на этой картинке, независимо от того, какую ссылку я нажимаю, я получу сущность ... (если я нажму alfk, я получу сущность) ,

link and stuff

Мои ссылки получить сгенерированные, как это (для каждой записи в базе данных):

<span> 
    <a id="myLink" title="tagLink" value = @i.ID 
    href="PleaseEnableJavascript.html" onclick="MyFunction();return false;">@i.Name</a> 
</span> 

и мой JavaScript выглядит следующим образом:

$('#myLink').click(function() { MyFunction(); return false; }); 
function MyFunction() { 
    document.getElementById('textTemp').value += document.getElementById('myLink').text + " "; 
} 

Мы все можем видеть проблему ... Все мои ссылки имеют одинаковый идентификатор, поэтому javascript будет первым ... Но как мне решить эту проблему?

ответ

2

Вы указываете событие OnClick дважды. Однажды здесь: onclick="MyFunction();return false;" и один раз с jQuery здесь: $('#myLink').click(function() { MyFunction(); return false; }); Вы должны использовать только один из них, и я бы рекомендовал использовать последний.

Вы всегда должны указывать свои уникальные идентификаторы. myLink, очевидно, не является уникальным. К счастью, у вас есть что-то уникальное прямо рядом с ним: @i.ID. Почему бы не объединить эти значения, чтобы вы получили myLink1, myLink2, myLink3 и т. Д.

Изменение этих идентификаторов сломало селектор jQuery $('#myLink'). Лучше всего было бы добавить класс в ваши теги и использовать его как селектор.

Наконец, вы хотите, чтобы ваша функция знала, какое значение нужно получить. Вы можете сделать это, читая данные события, которые передаются вашему событию click. Вот ответ, который показывает, как это сделать: Getting the ID of the element that fired an event

+0

Я использовал эту sulotion, но я попал в сообщение об ошибке: Ресурс, который вы ищете, был удален, изменил его имя или временно недоступен. Но я все еще вижу, что он добавил правильные имена раньше. – strscrm

+0

Nvm! Понял! Theeenks, я забыл вернуть ложь в конце. Я правильно отредактирую свой ответ! – strscrm

3

Не следует использовать идентификатор, чтобы поймать динамическое содержимое, используйте класс как это:

<span> 
    <a class="myLinks" title="tagLink" [email protected] 
    href="PleaseEnableJavascript.html" >@i.Name</a> 
</span> 

управлять событие щелчка внутри JS или на HTML, не оба. Затем, чтобы выбрать конкретный щелкнул использование элемента $ (это)

$('.myLinks').click(function (e) { 
    e.preventDefault(); 
    document.getElementById('textTemp').value += $(this).text() + " "; 
}); 
+0

Проблема заключается в том, что сайт хочет отправить, и я просто хочу, чтобы текст был в моем текстовом поле. – strscrm

+0

отредактирован для предотвращения других действий. – Vanojx1

1

решить ее!

Вот решение.

<a id="myLink @i.ID" title="tagLink" [email protected] href="Index.html" >@i.Name</a> 

И JavaScript:

$(document).ready(function() { 
     $(".someIdentifier .a").click(function (event) { 
      document.getElementById('textTemp').value += $(this).text() + " "; 
      return false; 
     }); 
    }); 
+0

Это сломает все другие ссылки, которые вы добавите на страницу. – nickles80

+0

Да, я заметил, что поэтому я добавил больше идентификаторов внутри $ ("a"). Click (function (event), поэтому он больше походит на $ (". SpecialIdentifier .a"). Click (function (event) – strscrm

+1

Если вы редактируете ответ, я удалю свой голос. – nickles80

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