Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   динамическое заполнение динамическими элементами (https://javascript.ru/forum/jquery/26820-dinamicheskoe-zapolnenie-dinamicheskimi-ehlementami.html)

Химерк 23.03.2012 15:07

динамическое заполнение динамическими элементами
 
доброго времени суток!

народ подскажите плиз в чём засада:

1) имею html в нём DIV со style="display:none;" в DIV-е находится элемент SELECT
2) в JS файле с использованием естественно jquery при загрузке документа создаю основываясь на данных XML файла набор кнопок в обработчик click этих кнопок - сажаю отоборажение DIV-а отчисткой style и заполняю селект...

в принципе если в конце события click перед завершением повесить alert видно что DIV отображается, а SELECT заполнен... но после подтверждения alert-а SELECT отчищается а DIV снова становится не видимым...

пипец... я уже голову сломал... подскажите что я не так делаю?...

на всякий пожарный приведу код

javascript:
$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "xml/Categorues.xml",
        dataType: "xml",
        success: function (xml) {
            var Num = 0;
            $(xml).find('Catedory').each(function () {
                var ParentCode = $(this).attr('ParentCode');
                var Code = $(this).attr('Code');
                var Picture = $(this).attr('pic');
                var ObjCategoryName = $(this).text();
                if (ParentCode == "0000000000") {
                    var newNum = new Number(Num + 1);
                    var NewElem = $('#etalon').clone().attr('id', 'cat_' + Code);
                    NewElem.attr('style', 'width:63px; height:63px;border:none;background: white url(\'' + Picture + '\') no-repeat; margin:3px;');
                    NewElem.attr('title', ObjCategoryName);
                    NewElem.attr('value', Code);
                    NewElem.hover(
                    function () {
                        //alert("in " + $(this).attr('title'));
                        $('#MouseCategory').text($(this).attr('title'));
                    }
                    ,
                    function () {
                        //alert("out " + $(this).attr('title'));
                        $('#MouseCategory').text('');
                    }
                    );
                    NewElem.bind('click',function () {
                        var ObjCategory = $('#ObjCategory');
                        ObjCategory.empty();
                        ObjCategory.append("<option value=''></value>");
                        $('#SubCategoryDiv').attr('style', 'display:block;');
                        $(xml).find('Catedory').each(function () {
                            var SubParentCode = $(this).attr('ParentCode');
                            var SubCode = $(this).attr('Code');
                            var SubPicture = $(this).attr('pic');
                            var SubObjCategoryName = $(this).text();
                            if (SubParentCode == Code) {
                                ObjCategory.append("<option value='" + SubCode + "'>" + SubObjCategoryName + "</value>");
                                //alert(" >>> " + SubCode + " >>> " + SubObjCategoryName + " >>> " + SubParentCode + " === " + Code);
                            }
                        });
                        alert("id=" + $(this).attr('id') + " value=" + $(this).attr('value'));
                    });
                    //NewElem.text(ObjCategoryName);
                    $('#etalon').after(NewElem);
                }
            });
        }
    });
});

HTML:
<label>Категория товара:</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<label id="MouseCategory"></label><br />
        <div id="CategoryDiv"><button id="etalon" style="display:none;"></button></div>
		<div id="SubCategoryDiv" style="display:none;">
        <label for="ObjCategory">Подкатегория товара:</label><br />
		<select id="ObjCategory">
		</select>
        </div><br><br>

Химерк 23.03.2012 16:56

вопрос решился... вроде как...

проблема была в применении HTML5...
использование для кнопки тега <button> а не <input type="button">
почему-то click для button отрабатывает с двойного нажатия (как ярлык на рабочем столе) а для <input> всё нормально, с первого нажатия...


Часовой пояс GMT +3, время: 04:31.