将jquery对象与数据一起传递给函数

时间:2012-12-05 14:16:50

标签: javascript jquery

如何将带有数据的jQuery对象传递给函数?

例如,我有以下对象:

var el = $('#myelement').data('test1','yay1')
                    .data('test2','yay2')
                    .data('test3','yay3');

以及处理对象数据的其他函数:

jQuery.fn.allData = function() {
    var intID = jQuery.data(this.get(0));
    return(jQuery.cache[intID]);
};

function checkIt (myobj){
  $.each($(myobj).allData(), function(key, value) {
    alert(key + "=" + value);
  });
}

然后我调用checkIt函数并传递myelement

checkIt(el);

但出了点问题: TypeError:obj未定义

2 个答案:

答案 0 :(得分:1)

当您在元素上调用jQuery.data()时,它会返回附加到该元素的所有数据,因此jQuery.fn.allData是多余的。重写您的checkIt函数,使其显示如下:

function checkIt(myObj) {
  $.each($.data($(myObj)), function(key, value) {
    alert(key + "=" + value);
  })
}

答案 1 :(得分:1)

实际上,allData功能不是你想要的。 你可以这样做:

function checkIt (myobj){
    $.each(myobj.data(), function(key, value) {
        alert(key + "=" + value);
    });
}

myobj.data()将返回一个对象,其中包含分配给该元素的所有数据。