В настоящее время я пытаюсь написать программу с динамическим div для каждого li, на который я нажимаю. Вот сценарий для справки: http://jsfiddle.net/aaronyolungz/P8x3z/7/
Каждый div будет иметь 4 параметра, которые я хочу вызвать самостоятельно: имя, родной город, майор, опыт (все строки)
На данный момент у меня есть одна функция, которая содержит все 4 переменные, которые меняются в зависимости от ввода функции, но я хочу иметь возможность возвращать только имя, майор или родной город, когда я его назову. Мой общий вопрос: должен ли я сохранять свой код как есть и вызывать переменные, которые я хочу:
UserStatement(user).User.name
?
Или я должен пойти на что-то вроде этого:
function user_name(user){return name;}
function user_major(user){return major;}
EDIT: Исправлена ссылка на скрипку
Я думаю, вы должны указать name, major, hometown
как значение атрибута внутри li
, например
<li data-name="1" data-major="xx" data-hometown="" ></li>
Таким образом, вы можете получить эти значения через $.data
, а не помещать данные в javascript.
ссылка на данные jQuery api doc
UserStatement(userName).name
хорошо
У вас есть функция, которая извлекает модель (UserStatement(userNumber)
), и я не вижу проблемы, когда вызывающие пользователи используют что-то вроде UserStatement(userNumber).name
.
Что касается оператора switch, его можно заменить поиском в массиве или объекте.
И поскольку доступ к модели должен быть динамическим, вы можете использовать атрибут в элементах, чтобы сообщить вам, какое свойство необходимо получить:
<ul id="testimonials" data-property='name'>
...
И доступ к нему вот так:
var userNumber = $(this).attr('id');
var property = $(this).parent().data('property');
added_div = '<div class="testimonial_expanded">' +
UserStatement(userNumber)[property] + '</div>';
Заклинай здесь.
function.localVar
? Извините, если это очевидно и повторяется, я просто хочу перепроверить и убедиться, что знаю, как это работает.