У меня есть следующая таблица html, которая содержит две кнопки. Обе кнопки обрабатываются одним и тем же обработчиком кликов.
<div id="replaceme">
</div>
<table>
<tr>
<input name="edit" class="edit button" type="button" value="edit" />
</tr>
<tr>
<input name="edit" class="edit button" type="button" value="edit" />
</tr>
</table>
Когда я нажимаю одну из этих кнопок, выполняется следующий javascript:
$(document).on('click', '.edit', function (event) {
document.getElementById("replaceme").innerHTML +="textshouldbedynamic <br/>";
});
Это работает, и текст в "replaceme" div заменяется должным образом.
Вопрос: Я хочу сделать это в таблице, которая создается через asp.net mvc, итерации в списке, который является частью моей модели. Теперь я хотел бы поместить части моей модели в функцию javascript. псевдокод:
<tr>
<input name="edit" class="edit button" type="button" value="edit" data="foo"/>
</tr>
<tr>
<input name="edit" class="edit button" type="button" value="edit" data="bar"/>
</tr>
Как я могу получить такие данные динамически в функцию javascript?
edit: Правильное ли решение добавить строку json и проанализировать ее в функции javascript?
<div id="replaceme">
</div>
<table>
<tr>
<input name="edit" class="edit button" type="button" value="edit" id='{"FirstValue":11,"SecondValue":42}' />
</tr>
<tr>
<input name="edit" class="edit button" type="button" value="edit" id='{"FirstValue":22,"SecondValue":33}'/>
</tr>
</table>
$(document).on('click', '.edit', function (event) {
document.getElementById("replaceme").innerHTML +="textshouldbedynamic <br/>";
var obj = jQuery.parseJSON( this.id );
document.getElementById("replaceme").innerHTML += obj.FirstValue + " " + obj.SecondValue + "<br/>";
});
на asp.net mvc код, отображаемый на стороне сервера, а js - это клиентская сторона, вы не можете заставить javascript работать на сервере. однако вы можете сделать запрос на запуск javascript на клиентской стороне в состоянии готовности. скажем, вы хотите запустить:
function foo(data){
//Do somthing
}
поэтому вы можете привязать к событию onready этот вызов:
$(document).ready(function(){
$('.edit button').each(function(){
val data = $(this).attr('data');
foo(data);
});
});
это то, что вам нужно?
Вы думали о привязке шаблона к инфраструктуре клиентской стороны, такой как KnockoutJs?