0

我正在尝试一个小型 JavaScript 库SnackJS,并且做得很好。但是我碰壁了,似乎无法弄清楚这一点:

小吃:

<script type="text/javascript">
    snack.ready(function () {
        var parameters = {
            node: document.body,
            event: 'change',
            delegate: function (node) {
                return node.getElementsByClassName("qty")
            }
        }

        snack.listener(parameters, postToOtherPage);

        function postToOtherPage() {
            var options = {
                method: 'post',
                url: '/InlineEditing',
                data: {
                    qty: 5,
                    id: "hi"
                }
            }
        }
    });
</script>

我的问题是,在输入元素的更改事件中,如何将元素的 id 以及该元素的值(数量)发布到另一个页面?

我确实浏览了文档,但我无法弄清楚。

4

1 回答 1

2

你错过了一个

snack.request(options, callback);

称呼。其中的一部分,您的代码看起来不错..有什么问题?

更新

哦,我看到你没有从元素中检索 id.. 从文档中:事件回调的第一个参数是触发事件的节点,所以:

snack.ready(function () {
    var parameters = {
        node: document.body,
        event: 'change',
        delegate: function (node) {
            return node.getElementsByClassName("qty")
        }
    }

    snack.listener(parameters, postToOtherPage);

    function postToOtherPage(event) {
        var options = {
            method: 'post',
            url: '/InlineEditing',
            data: {
                qty: 5,
                id: this.id
            }
        }
        snack.request(options, function(){
          // do something with response..
        });
    }
});

应该工作正常..

更新

callback.apply(this, [event])不,抱歉,像往常一样,进一步阅读我发现他们正在使用的文档......更新了上面的代码。

顺便说一句,我没有看到使用这种微型库而不是 jQuery/Zepto 等成熟库的意义,因为微型库在大小方面的优点不值得 IMO 的缺点。

考虑“更大”的库:

  • 拥有更多功能:您决定扩展应用程序功能的那一天怎么样?
  • 拥有更大的社区/基于商业的支持:书籍、参考资料、指南……
  • 更有可能已经解决了微型库中仍然存在的问题/问题。想想数百个跨浏览器兼容性黑客......

但是,这只是我的意见,仅作为我的个人建议。

于 2012-10-16T22:54:21.437 回答