Наконец, некоторые предлагают обернуть список в чем-то:
Это правильный путь. «Безусловно многословие» - это плохой способ взглянуть на это. Он имеет явное значение, когда вы пишете
my_team.Players.Count
. Вы хотите подсчитать игроков.my_team.Count
.. ничего не значит. Считайте что?
Команда не является списком - состоят не только из списка игроков.
Если вы действительно обеспокоены тем, что он слишком многословный, вы всегда можете выставлять свойства из команда:
public int PlayerCount { get { return Players.Count; } }
.. которая становится:
my_team.PlayerCount
Теперь это имеет смысл и придерживается Закона Деметры .
Вы также должны рассмотреть возможность соблюдения принципа повторного использования Composite . Наследуя от
List
, вы говорите, что команда - это список игроков и выставляя из нее ненужные методы. Это неверно. Как вы сказали, команда - это больше, чем список игроков: у нее есть имя, менеджеры, члены совета, тренеры, медицинский персонал, зарплата и т. Д. Если ваш класс команды содержит список игроков, вы «У команды есть список игроков», но у нее также могут быть и другие вещи.
При необходимости в способе сослаться на элементы списка после клонирования их необходимо использовать классы, не идентификаторы. Измените весь идентификатор = "..." к классу = "..."
, Если Вы имеете дело с унаследованным кодом или чем-то и не можете изменить идентификаторы на классы, необходимо удалить идентификационные атрибуты перед добавлением.
$("#MainConfig").clone(false).find("*").removeAttr("id").appendTo($("#smallConfig"));
Просто знать, что у Вас нет способа больше ссылаться на отдельные объекты.
$("#MainConfig")
.clone(false)
.find("ul,li")
.removeAttr("id")
.appendTo($("#smallConfig"));
Примеряют это для размера.:)
[Редактирование], Фиксированное для комментария redsquare.
Если у Вас будет несколько подобных объектов на странице, лучше использовать классы, не идентификаторы. Тем путем можно применить стили к uls в различных контейнерных идентификаторах.
Если я вас правильно понимаю, это то, что вам нужно:
jQuery.fn.updateChanges = function(){
this.bind('blur',function(){
var data = {};
data[$(this).attr("name")] = $(this).val();
$.post('/ajax/updateValue.php',
data,
function(ret){
if (ret=='success') alert("all good!");
}
}
}
Ваша основная проблема заключалась в попытке использовать динамическое значение с использованием обозначения литерала объекта, чего вы не можете сделать, не вернувшись к очень плохому практики (например, использование eval (), где eval () не принадлежит;).
var myObj = { 'n1': 'v1' };
эквивалентно: $ ("# детали"). clone (). attr ('id', 'details_clone'). after ("h1"). show ();