О каких раздражениях jQuery я должен знать как Опытный пользователь?

Вы можете проверить стратегии DefaultCommercePlaceOrderStrategy и DefaultCreateOrderFromCartStrategy для управления процессом. С другой стороны, создание многократного заказа из корзины невозможно из-за рекламных акций и доставки. Некоторые акции и стоимость доставки рассчитываются от одной корзины. Когда вы разделяете корзину на несколько заказов, согласованность расчетов не выполняется.

С другой стороны, у hybris есть функция консигнации , почему вы не использовали ее?

Какова ваша перспектива разделения корзины на несколько заказов?

6
задан Rob W 27 December 2011 в 17:11
поделиться

8 ответов

Вероятно, единственная реальная проблема, которую я имею когда-либо, сталкивалась, $ (этот) объем проблемы. Например, если Вы делаете вложенный для цикла по элементам и sub элементам с помощью созданного в JQuery .each () функция, что делает $, к которому (это) относится? В этом случае это относится к самому внутреннему объему, как это должно быть, но не всегда ожидаемый.

Простое решение состоит в том, чтобы просто кэшировать $ (это) к переменной прежде, чем развернуть далее в цепочку:

$("li").each(function() {
    // cache this
    var list_item = $(this);
    // get all child a tags
    list_item.find("a").each(function() {
        // scope of this now relates to a tags
        $(this).hide("slow");
    });
});
3
ответ дан 8 December 2019 в 17:28
поделиться

(Единственная вещь, о которой я могу думать, состоит в том, что это - элемент вместо объекта jQuery в $("...").each(function)- вызовы, как $(element) чаще используется затем просто элемент. И что чрезвычайно незначительная вещь - примерно это.

Пример вышеупомянутого (упрощенный и я знаю, что существуют другие намного лучшие способы сделать это, я просто, не мог думать о лучшем примере теперь):

// Make all divs that has foo=bar pink.
$("div").each(function(){
  if($(this).attr("foo") == "bar"){
    $(this).css("background", "pink");
  }
});

each функция, которая берет функцию в качестве параметра, та функция вызвана однажды для каждого элемента соответствия. В переданной функции, this относится к фактическому DOM-элементу браузера, но я нахожу, что Вы часто будете хотеть использовать некоторую функцию jQuery на каждом элементе, таким образом имея необходимость использовать $(this). Если это было установлено на какой $(this) Вы получили бы более короткий код, и Вы могли все еще получить доступ к использованию объекта элемента DOM this.get(0). Теперь я вижу основания для вещей, являющихся, как они, а именно, та запись $(this) вместо этого, является едва настолько громоздким, и в случае, если можно сделать то, что Вы хотите сделать с элементом DOM путем, это, быстрее, чем способ, которым это, возможно, было, и другой путь не будет быстрее в случае, который Вы хотите $(this).)

2
ответ дан 8 December 2019 в 17:28
поделиться

Мои две болевых точки были скобкой черт, может стать очень сбивающим с толку

$('.myDiv').append($('<ul />').append($('<li />').text('content')));

Моя другая распространенная проблема имеет отношение к использованию JSON в jQuery, я всегда пропускаю последнюю запятую,

$('.myDiv').tabs({ option1:true, options2:false(, woops)});

Наконец, я использовал jQuery в течение приблизительно 6 месяцев теперь, и я не думаю, что буду когда-либо возвращаться к прототипам. Я абсолютно люблю jQuery и много приемов, которые они используют, помогли мне изучить много. один прохладный прием, который я люблю, использует строковые литералы для вызовов метода, я никогда действительно сделал так слишком много с прототипами.

$('.myDiv')[(add ? 'add' : 'remove') + 'Class']('redText');
2
ответ дан 8 December 2019 в 17:28
поделиться

Я думаю единственное, которое получает меня, то, что, когда я делаю запрос выбора для единственного элемента, я должен помнить, что он возвращает массив элементов даже при том, что я знаю, что существует только один. Обычно, это не имеет никакого значения, если Вы не хотите взаимодействовать с элементом непосредственно вместо через методы jQuery.

6
ответ дан 8 December 2019 в 17:28
поделиться

Я не думаю, что существуют любые реальные глюки или даже любые непрекращающиеся раздражения. Другие ответы здесь, кажется, подтверждают это - проблемы вызываются просто немного отличающимся API и другим стилем кодирования JavaScript, который поощряет jQuery.

Я начал использовать Прототип несколько лет назад и нашел это открытием. Настолько мощный, настолько изящный. После нескольких месяцев я испытал jQuery и обнаружил, каковы питание и элегантность действительно. Я не помню раздражений. Теперь я вернулся работа над проектом с помощью Прототипа, и похоже на шаг назад (для ярмарки, мы используем Прототип 1.5.1).

Если Вы инвертировали вопрос - "О каких Опытных раздражениях я должен знать как пользователь jQuery?" - Вы получили бы намного больше ответов.

2
ответ дан 8 December 2019 в 17:28
поделиться

Нет. Nada. Nyet.

1
ответ дан 8 December 2019 в 17:28
поделиться

.each:

jQuery (необходимо Индексировать, даже если Вы не используете его):

$.each(collection, function(index, item) {
  item.hide();
});

Прототип (Вы обычно используете объект, таким образом, можно опустить индекс):

collection.each(function(item) {
  item.hide();
});
-1
ответ дан 8 December 2019 в 17:28
поделиться

Это - действительно только раздражение при выполнении большого управления DOM. PrototypeJs автоматически добавляет свой API к Элементам DOM, таким образом, это работает в prototypejs (jQuery, конечно, не делает этого):

var el = document.createElement("div");
el.addClassName("hello"); // addClassName is a prototypejs method implemented on the native HTMLElement

Даже не выполняя собственный элемент через $ () функция.

PS: Должен отметить, что это не работает в IE.

-1
ответ дан 8 December 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: