将json通过click事件传递给jQuery函数

时间:2014-04-04 21:01:48

标签: javascript jquery json jquery-1.7

我有这个旧的“封闭”系统,它在自己的容器中运行IE,这意味着在很多情况下我必须像一个穴居人一样编码因为我不能使用任何浏览器开发工具/控制台来对象进行X射线扫描从远程系统返回。

现在,我正在看的具体功能是来自第三方的回调(它变得复杂),它返回我愿意打赌的标准JSON对象。

function core_OnUeDeltaItemsUpdate(dataType, oData)
{
    if (dataType == "Units")
    {
        // Bail if dispatch report xml hasn't been loaded yet.
        if (oXml == null)
            return;

        ..... does lots of stuff

        // Reload the content in case any of our displayed units changed
        processUeDelta.click();
    }
}

... at the bottom of the page

<button style="display:none;" type="button" id="processUeDelta"/>

和我希望使用jQuery的附加javascript文件

$(function(){
    $("#processUeDelta").click(function(){
        var i = 0;
        alert(this.ueDelta);
        for(var propertyName in this.ueDelta)
        {
            i++;
            alert("property " + i + ": " + oData[propertyName]);
        }
    });
});

现在,当前最后一个将自身绑定到隐藏按钮的函数无法解析oData。我在这里坚持两件事。

  1. 我不确定如何将oData对象传递给附加的eventhandler
  2. 我不太热衷于这个设计,也许还有另一种方法可以取出中间按钮,这样我就可以处理JSON数据对象oData。
  3. 注意事项:

    • 这是基于数据泵,所以这个回调平均被调用5秒。
    • 我只能使用jQuery 1.7.1
    • 我看不到对象,我的浏览器无法充当测试工具,有太多移动部件让我能够从应用程序外部进行测试。

1 个答案:

答案 0 :(得分:1)

您可以将core_OnUeDeltaItemsUpdate函数替换为您自己的函数,然后调用原始的core_OnUeDeltaItemsUpdate函数。在你的jQuery文件中做这样的事情

$(document).ready(function(){
    window._core_OnUeDeltaItemsUpdate = core_OnUeDeltaItemsUpdate;

    window.core_OnUeDeltaItemsUpdate = function(dataType, oData){

        // pass the parameters into the original function
        _core_OnUeDeltaItemsUpdate(dataType, oData);

        // do whatever you need to do with oData
        var i = 0;
        alert(this.ueDelta);
        for(var propertyName in this.ueDelta)
        {
            i++;
            alert("property " + i + ": " + oData[propertyName]);
        }
    }
});