Большинство интерфейсов пользовательского интерфейса JS предоставляют свои компоненты пользовательского интерфейса, создавая их полностью в JS. Это может быть вашим лучшим выбором, поскольку он не зависит от вашего серверного фреймворка (вы можете использовать его с ruby, php, .net), и он держит ваш HTML в чистоте.
Для примера с примером/кнопкой вы должны отображать как список, так и кнопку из функции JS, вызываемой на стандартном объекте HTML. В вашем случае, если вы используете свою структуру MVC для записи данных в список, вы можете продолжать это делать и писать логику создания JS, чтобы принять список в качестве ввода, а затем визуализировать свой расширенный стиль и пользовательский интерфейс (например, кнопку) вокруг него. Это позволяет вам по-прежнему принимать данные со стороны сервера, как обычно, и дает вашему HTML-коду аналогичный внешний вид для конечного продукта (ему просто не хватают кнопки добавления/удаления), но позволяет вам повторно использовать вашу логику HTML/JS насколько это возможно.
Если ваш текущий код выглядит следующим образом:
<div class="addremovelist">
<select>
<option>blah</option>
<option>blah</option>
<option>blah</option>
</select>
<div class="addremovebuttons">
<input type="button" value="Add" />
<input type="button" value="Add All" />
<input type="button" value="Remove" />
<input type="button" value="Remove All" />
</div>
<div>
Вы бы сейчас написать это:
<select id="myselect">
<option>blah</option>
<option>blah</option>
<option>blah</option>
</select>
Со следующим JavaScript в вашем случае окно загрузки:
$('#myselect').addRemoveList({myoptions: 'ifnecessary'});
Или что-то подобное
Если SEO заботится о вас, вы должны убедиться в том, что вы знаете о влиянии рендеринга html-контента на JS, есть (в основном это не будет видно сканерам) –
Спасибо @MattBerkowitz, я обновил свой пример с помощью SEO дружественной реализации. Это может быть не дружественным к читателю экрана, хотя :( –
@MichaelLaVoie эта идея тоже придумала, но кажется, что мне нужно использовать javascript для рендеринга, что в основном статический код html –