Различное поведение с .val () и .attr ("value") с использованием ajax возвращает данные на clone () 'd, но не вставленный элемент - PullRequest
1 голос
/ 03 августа 2011

Как видно из заголовка, я пытаюсь установить значение поля формы .clone() 'd, используя результаты запроса $.getJSON(). Все возвращаемые значения имеют тот же ключ, что и атрибут имени поля формы, к которому они принадлежат.

Естественно, я пытался использовать .val("foo") для устранения различий между кросс-браузерными типами / полями, но это не сработало Как ни странно, .attr("value","foo") делает.

Есть идеи? Это ожидаемое поведение или недокументированная причуда? Вот соответствующий фрагмент кода:

function showSites(){
$.getJSON("process.php?action=showSites", function(data) {
    var items = [];
    $.each(data.sites, function(key, val) {  
        var $form = $("#addSiteForm").clone(); 
        var buttons = '<button id="getCert" class="button" href="getCert.php?id=' + val.id + '">Get Cert</button>'
            + '<button id="updateSite" class="button" href="process.php?action=updateSite&id=' + val.id + '">Update Site</button>'                                                                              
            + '<button id="deleteSite" class="button" href="process.php?action=deleteSite&id=' + val.id + '">Delete Site</button>';

        // set siteId
        $form.find("input[name=siteId]").attr("value",val.id);

        // change values
        $.each(val, function(i,v){
            $form.find("[name="+i+"]").val(v);
        });

        items.push('<h3><a href="#">' + val.name + '</a></h3>');
        items.push("<div class='site'>");
        items.push("<form class='siteForm' id='"+val.id+"'>");
        items.push($form.html());
        items.push("</form>");
        items.push(buttons);
        items.push("</div>");   
    });
    var foo = items.join('');
    $("#sites").prepend(foo).accordion("destroy").accordion();                  
});
});

1 Ответ

1 голос
/ 10 июля 2013

Вы можете использовать свойство .val() только для входных тегов (текстовое поле, текстовое поле, ..).

attr("attrname","value") используется для установки значений для любых тегов.Вы можете установить несколько фиктивных атрибутов в теге div и получить значение attr("attrname");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...