Как создать селектор, который ссылается на динамически создаваемый элемент?

0

Я хотел бы знать, как создать селектор, который ссылается на динамически созданный элемент, без использования события на динамически создаваемом элементе?

ПРИМЕЧАНИЕ: динамически созданный элемент я имею в виду элемент, который не находится в HTML в начале

Я знаю, что могу использовать $ (this), когда у меня есть событие (например.click) для элемента, но когда у меня нет события, и мне нужен селектор динамически созданного элемента?

Спасибо всем.

update: Вот моя ситуация:

$(".product div a").click(function() {
            var nameOfProduct = $(this).parent().find("h3").text();
            var dataPrice = parseInt($(this).parent().find("div b").text());
            var isProductIn = false;
            var itemsInDay = $(/*HERE I NEED THE SELECTOR*/).find("div.item").nextUntil("div.center");

            itemsInDay.each(function () {
                if (nameOfProduct == ($(this).find("span ins span").text())) {isProductIn = true;};
            });

            if (isProductIn) {
                //add only +1, not new product again;
            } else {
                var imgOfProduct = $(this).parent().parent().find("img").attr('src').replace('med', 'min');
                var product = ('<div class="item" data-price="' + dataPrice + '"><img src="' + imgOfProduct + '"><span><ins><b>1x</b> ' + nameOfProduct + '</ins><a href="#"><img src="images/delete.png"></a></span></div>');
                $(product).appendTo(".dayOrder:last").delay(800).hide().slideDown();
            }
            return false;
});
  • 1
    Как вы создаете динамически создаваемый элемент? Какой-то код?
  • 1
    присвойте переменную элементу, когда вы создаете его, и затем вы можете продолжать использовать его для управления элементом.
Показать ещё 9 комментариев
Теги:

1 ответ

1

Попробуйте что-нибудь в этом http://jsfiddle.net/pEb7D/5/

HTML:

<div class="test"></div>

Javascript:

dynamicSelector = $('.test').append('<div class="newElement">Hello!</div>');

setTimeout(function () {
    dynamicSelector.text('Goodbye!');
}, 3000);

UPDATE: ОК, поэтому вы помещаете элементы в .orderDay:last элемент. Там вы можете просмотреть его содержимое и посмотреть, есть ли у вас уже существующий элемент того или иного типа.

Однако я бы рекомендовал сделать массив в соответствии с идентификатором продукта и затем отреагировать на это. Например, http://jsfiddle.net/8byQp/

Javascript:

daysOrderArray = [];    
$(".product div a").click(function() {
            var nameOfProduct = $(this).parent().find("h3").text();            
            var imgOfProduct = $(this).parent().parent().find("img").attr('src').replace('med', 'min');
            var dataId = $(this).parent().parent().data("id");
            var dataPrice = parseInt($(this).parent().find("div b").text());
            priceSum += dataPrice;
            updatePrice(priceSum);

            if(dataId in daysOrderArray){
                // Now add number rather than new product.
                daysOrderArray[dataId]++;
                $('.item[data-id="' + dataId + '"] .quantity').text(daysOrderArray[dataId]);

            } else {
                daysOrderArray[dataId] = 1;
            var product = ('<div class="item" data-id="' + dataId + '" data-price="' + dataPrice + '"><img src="' + imgOfProduct + '"><span><ins><b><span class="quantity">1</span>x</b> ' + nameOfProduct + '</ins><a href="#"><img src="images/delete.png"></a></span></div>');
            $(product).appendTo(".dayOrder:last").delay(800).hide().slideDown();
            return false;
            }
        });
  • 0
    +1 Посмотрим, так ли это было.
  • 0
    Возможно, это поможет мне, но не могли бы вы написать свой совет специально для моей ситуации?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню