1

我正在生成具有唯一 id 的动态 css 按钮,并且我正在使用以下单击处理程序捕获单击事件

$(document.body).on('click', 'a', function() {
    if (typeof(this.id) != "undefined") { //check if id exists
        var n = this.id.split("%");
        if (n[0] == "jsonpbtn") { //check if one of our buttons    
            var surl = "http://www.blah.com/tree/jsonp/foo/" + n[1];
            $.ajax({
                url: surl,
                cache: false,
                dataType: "jsonp",
                jsonp: false,
                jsonpCallback: 'foo',
                error: function(XHR, textStatus, errorThrown) {
                    alert(textStatus + ":" + errorThrown)
                },
                success: function(foo) {
                    $('#blah' + foo.id).html(foo.message);
                }
            });
        }
    }
});​

尽管 ajax 调用有效,但页面会生成错误“parsererror:Error: foo was not called”;我相信问题是这会遍历页面上的所有“a”元素并为每个“jsonpbtn”调用函数?

4

1 回答 1

0

我发现通过在我更改按钮状态的 ajax 调用之前插入一个初步阶段可以解决问题。

$(document.body).on('click', 'a', function() {
if (typeof(this.id) != "undefined") { //check if id exists
    var n = this.id.split("%");
    if (n[0] == "jsonpbtn") { //check if one of our buttons    
        var surl = "http://www.blah.com/tree/jsonp/foo/" + n[1];
        $('#div_id'+n[1]).html('<a class="button" href="#">working</a>');//<-added this
        $.ajax({
            url: surl,
            cache: false,
            dataType: "jsonp",
            jsonp: false,
            jsonpCallback: 'foo',
            error: function(XHR, textStatus, errorThrown) {
                alert(textStatus + ":" + errorThrown)
            },
            success: function(foo) {
                $('#blah' + foo.id).html(foo.message);
            }
        });
    }
}
});​

感谢那些试图提供帮助的人。问候马丁

于 2012-10-18T07:22:16.297 回答