ФорумПрограммированиеJavaScript → Клонирую код, но заменить id не удается

Клонирую код, но заменить id не удается

  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 24 июня 2012 г. 3:07

    							<div id="products">
    <input type="text" name="products_id[]" value="" class="product_quickfind" />
    <table cellpadding="3" cellspacing="3" border="0">
    <tr>
    <td>Товар:</td>
    <td><input type="text" name="products_name[]" value="" class="quickfind" /></td>

    <td width="15"></td>

    <td>Кол-во:</td>
    <td><input type="text" name="products_quantity[]" size="3" class="products_quantity" /></td>

    <td width="15"></td>

    <td>Цена:</td>
    <td><input type="text" name="products_price[]" size="6" class="products_price" /></td>

    <td width="15"></td>
    </tr>
    </table>
    </div>

    <div id="products_add"></div>


    	setSlider($('#scroll-pane'));

    var difference = $(".scroll-content").height()-$("#scroll-pane").height();

    $(".quickfind").autocomplete({
    source: "find.php",
    minLength: 2,
    select: function(event,ui){
    $(".product_quickfind").val(ui.item.id);
    }
    });

    count = 0;
    $("#ansi1").click(function () {
    $("#products").clone().each(function(){
    $(this).find("input.quickfind").val("");
    $(this).find("input.products_quantity").val("");
    $(this).find("input.products_price").val("");
    $(this).find("input.product_quickfind").val("").removeClass("product_quickfind").addClass("product_quickfind_" + count);

    $(this).find("input.quickfind").autocomplete({
    source: "find.php",
    minLength: 2,
    select: function(event,ui){
    $("#products").find("input.product_quickfind_" + count).val(ui.item.id); // Не работает
    }
    });

    }).insertBefore("#products_add");
    count ++;
    });


    Получается после создания (клонирования) нового блока, при выборе товара его ui.item.id не вставляется в input.product_quickfind_ + count. Уже и find пробовал, но видимо ищет только по html, а не по js созданному блоку.
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 24 июня 2012 г. 11:55, спустя 8 часов 47 минут 19 секунд

    почитай про live() или
    delegate()
  • Sinkler

    Сообщения: 8096 Репутация: N Группа: в ухо

    Spritz 24 июня 2012 г. 14:09, спустя 2 часа 13 минут 58 секунд

    сейчас вообще все разруливает on()
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 24 июня 2012 г. 14:17, спустя 8 минут 49 секунд

    почитай про live() или
    delegate()

    эти функции дублирую или копируют нужный код, а у меня проблема только в том что id не прописывается в нужный input
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 24 июня 2012 г. 15:15, спустя 57 минут 9 секунд

    	$("#ansi1").live('click', function () { 
    $("#products").clone().removeAttr("id").attr('id', 'draggable').each(function(){
    // $(this).removeClass('products').addClass('products' + count);
    $(this).find("input.quickfind").val("");
    $(this).find("input.products_quantity").val("");
    $(this).find("input.products_price").val("");
    // $(this).find("input.product_quickfind").removeClass('product_quickfind').addClass('product_quickfind' + count);
    $(this).find("input.product_quickfind").val("").removeClass("product_quickfind").addClass("ct");

    $(this).find("input.quickfind").autocomplete({
    source: "find.php",
    minLength: 2,
    select: function(event,ui){
    $("#draggable").find("input.ct").val(ui.item.id);
    }
    });

    }).insertBefore("#products_add");
    count ++;
    });


    попробовал так, но если делаю 3 клона и потом выбираю товар, то меняет value в product_quickfind только в первом поле и два других так же меняют его в первом
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 24 июня 2012 г. 15:50, спустя 35 минут 8 секунд

    ПОТОМУ ЧТО, БЛЕАДЬ, ИДЕНТИФИКАТОР УНИКАЛЕЛ!!111
    Высокоуровневое абстрактное говно
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 24 июня 2012 г. 15:57, спустя 7 минут 4 секунды

    ПОТОМУ ЧТО, БЛЕАДЬ, ИДЕНТИФИКАТОР УНИКАЛЕЛ!!111

    а вот хуй, пробовал:
    $("#products").clone().removeAttr("id").attr('id', 'draggable' + count).each(function(){

    $("#draggable" + count).find("input.ct").val(ui.item.id);

    пробовал и так
    $(this).find("input.product_quickfind").val("").removeClass("product_quickfind").addClass("ct" + count);

    $("#draggable").find("input.ct" + count).val(ui.item.id);

    НЕ РАБОТАЕТ ВООБЩЕ!
  • Sinkler

    Сообщения: 8096 Репутация: N Группа: в ухо

    Spritz 24 июня 2012 г. 16:22, спустя 25 минут 28 секунд

    ПОТОМУ ЧТО, БЛЕАДЬ, ИДЕНТИФИКАТОР УНИКАЛЕЛ!!111

    у него вроде внутренности копируются.

    попробуй сделать .clone(true) вместо .clone()
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 24 июня 2012 г. 16:29, спустя 6 минут 18 секунд

    попробуй сделать .clone(true) вместо .clone()

    вообще перестало работать падающее scroll-panel
    Спустя 128 сек.
    сделал так и заработало
    	$("#ansi1").live('click', function () { 
    $("#products").clone().removeAttr("id").attr("id", "draggable").each(function(){
    // $(this).removeClass('products').addClass('products' + count);
    $(this).find("input.quickfind").val("");
    $(this).find("input.products_quantity").val("");
    $(this).find("input.products_price").val("");
    // $(this).find("input.product_quickfind").removeClass('product_quickfind').addClass('product_quickfind' + count);
    $(this).find("input.product_quickfind").val("").removeClass("product_quickfind").addClass("ct");

    $(this).find("input.quickfind").autocomplete({
    source: "find.php",
    minLength: 2,
    select: function(event,ui){
    // $(".ct").val(ui.item.id);
    // $("#products").find("input.product_quickfind_" + count).css("background", "red");
    // $("#draggable" + count).find("input.ct").val(ui.item.id);
    $(this).parents("#draggable").find("input.ct").val(ui.item.id);
    }
    });

    }).insertBefore("#products_add");
    count ++;
    });
    Спустя 17 сек.
    через жопу конечно всё, но для себя сойдёт
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 24 июня 2012 г. 22:49, спустя 6 часов 19 минут 54 секунды

    даже боюсь представить, что там во всем коде твориццо -_-
    Высокоуровневое абстрактное говно

Пожалуйста, авторизуйтесь, чтобы написать комментарий!