сериализовать без формы? - PullRequest
14 голосов
/ 03 марта 2010

Привет всем. Я включаю объекты (добавляя класс .active) и выключаю их на html-странице с html-объектами, а не с формами. И при каждом щелчке я хочу, чтобы он создавал массив элементов с классом .active, но я не могу получить никаких результатов?!

это в правильном направлении?

var data = $('li.tagToggle.active').serializeArray();
// li id format is 'id_0001' 
alert(data)
$.post("/scripts/php/process.php",{ 
         'data[]': data,
         funcName : 'tagResults',
         tagResults : '1'
}) 

продолжает предупреждать и пустое окно, но когда я использую это в форме, он захватывает все объекты с классом .active

любые указатели приветствуются!

Ответы [ 5 ]

13 голосов
/ 11 февраля 2016

Вы можете сериализовать все входы внутри элемента следующим образом:

var data = $('YourId :input').serialize()
10 голосов
/ 29 ноября 2012

Это то, что я использую

(function($){
$.fn.serializeAny = function() {
    var ret = [];
    $.each( $(this).find(':input'), function() {
        ret.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( $(this).val() ) );
    });

    return ret.join("&").replace(/%20/g, "+");
}
})(jQuery);

чтобы использовать его в вашем случае $ ( 'li.tagToggle.active') serializeAny ();.

6 голосов
/ 19 июля 2014

С помощью этой функции вы можете сделать любой набор элементов сериализуемым:

function makeSerializable(elem) {
  return $(elem).prop('elements', $('*', elem).andSelf().get());
}

Тогда вы можете использовать это так:

var arr = makeSerializable('li.tagToggle.active').serializeArray();

или

var $elem = $('li.tagToggle.active');
var data = makeSerializable($elem).serialize();
6 голосов
/ 03 марта 2010

хорошо - это работает, но все так же аккуратно, как и serialize ()

function getTags(){

    var data = [];

    $('li.tagToggle.active').each(function(){
        var me = $(this);
        var id = me.attr("id").split('_');
        data.push(id[1])

    });

    $.post("/scripts/php/process.php",{ 
         'data': data,
         funcName : 'tagResults',
         tagResults : '1'
    }) 

}

думаете есть лучший метод?

2 голосов
/ 13 октября 2017

В случае, если кто-то наткнется на этот вопрос, эта ссылка будет тем же вопросом, и решение будет использовать jquery serialize

    $('#divId :input').serialize();

так в этом случае

    $('li.tagToggle.active :input').serialize();

ссылка на вопрос jQuery для сериализации только элементов внутри div

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