Во-первых, вы можете (и, возможно, должны) использовать переменную javascript для хранения значения и просто повторно использовать его. Это улучшит читабельность вашего кода. Во-вторых, я не уверен, что именно вы пытаетесь сделать - похоже, вы настраиваете обработчик кликов для каждого элемента. Я бы посоветовал вам дать им всем класс, а затем использовать этот класс в качестве селектора для применения элемента. В-третьих, создается впечатление, что вы создаете новый элемент с тем же идентификатором, что и существующий элемент. Это было бы нет-нет. Вы должны дать ему новый идентификатор и / или имя. Вам может не понадобиться идентификатор внешнего элемента, если вы используете класс.
Ex.
Компоновка:
<% foreach (var group in Model.GroupBy(item => item.goalId)) { %>
<p>
<input type="button" value="Add" class="add-goal" />
<input type="hidden" value='<%= group.Key %>' />
</p>
<% } %>
Сценарий
$('.add-goal').one( 'click', function() {
var goalid = $(this).next('input[type=hidden]').attr('value');
var parent = $(this).parent().html('');
$( '<input type="text" id="AddNew2' + goalid
+ '" name="AddNew2' + goalid + '" value="" />' )
.appendTo(parent)
.keypress( function(e) {
...
});
});