javascript - jQuery/XML : synchronizing data and representations using DOM-Mutation-Events

标签 javascript jquery events dom mutation-events

我正在创建一个 Web 应用程序,它使用 jQuery 来修改并使用 HTML 来表示数据。与单个数据节点相关的文档中可以有多个表示。用户可以动态创建它们。 例如,数据将在表中表示并可以修改。此外,用户有意见扩展“快速概览面板”以快速访问特定数据。

如果一个用户控件触发了一个事件 => 必须修改数据 => 需要刷新与同一数据相关的其他用户控件。

<html>
<head>
    <title>synchronize</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    <script type="text/javascript">
     $(function() {

        //handling data

        $.ajax({url: "./data/config.xml", cache: false, async: false, success: init});
        var data;
        function init(d) {
           data = d;
           $(".bottle", data).bind("DOMAttrModified", notifyRep);

        }
        function notifyRep(e) {
           if(e.relatedNode.nodeName == "content")
              $(this).trigger("changeContent");
        }

        //handling representation-sync

        $(".bottle", data).bind("changeContent", function() {
           $("#bottleRep1").val($(this).attr("content"));
        });

        $(".bottle", data).bind("changeContent", function() {
           $("#bottleRep2").val($(this).attr("content"));
        });

        //handling modification

        $("#bottleRep1").bind("change", function() {
           $(".bottle", data).attr("content", $(this).val());
        });

        $("#bottleRep2").bind("change", function() {
           $(".bottle", data).attr("content", $(this).val());
        });

     });
    </script>
</head>
<body>
    <div id="app">
        <span>bottle-content:<input id="bottleRep1" type="text" value="test" /></span>
        <span>bottle-content:<input id="bottleRep2" type="text" /></span>
    </div>
</body>

实际问题是每个用户控件处理自己的修改。更改内容处理程序需要知道数据修饰符,因此它可以跳过表示更新。 是否存在针对此类问题的通用解决方案? 如果没有,您能否提出一个好的解决方案的建议?

最佳答案

您可以尝试创建一个自定义函数,在触发刷新时处理执行某些操作
$('body').bind('foo', function(e, param1, param2) {
警报(param1 + ': ' + param2);
});

然后你可以在 dta 的 chnage 上调用上面创建的函数,这样函数就会触发并执行刷新
像这样
$('body').trigger('foo', [ 'bar', 'bam' ]);//提醒 'bar: bam'

关于javascript - jQuery/XML : synchronizing data and representations using DOM-Mutation-Events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1177518/

相关文章:

delphi - 获取对对话框窗口窗体的引用(ShowMessage、MsgDialog 等)

python - 获取触发事件的小部件?

jquery - 使用 jQuery 选择 iframe 中的元素

单击两个不同的按钮时,jQuery 调用相同的函数

javascript - 将输入值传递给空 div

javascript - 我应该使用什么语言来创建像 Weebly 这样的拖放功能?

JavaScript : How to pass object as argument to addEventListener function?

javascript - 火狐中的 "Event is not defined"

javascript - 如何点击 awesomium webcontrol c# 中的链接

JavaScript ||运算符(operator)行为