gpt4 book ai didi

javascript - 使用 jQuery 触发动态自定义事件

转载 作者:行者123 更新时间:2023-12-03 11:55:50 26 4
gpt4 key购买 nike

我正在我的 Symfony2 项目中开发 JSON/AJAX 实现。一切正常(模态、重定向等),但我的“火灾事件”实现却行不通。

这是我的代码:

$(document).trigger(data.content, [data.data]);

data.content 包含事件的名称,在本例中为“lesson_editor.added_step”,data.data 包含 HTML 字符串。

我在 jQuery 库中收到此错误:

Uncaught TypeError: undefined is not a function

使用 Chrome 调试器,上面的触发器就是导致它的行。

如果我用字符串 "my.test" 替换 data.content ,它就可以工作。

完整的 JSON 字符串:

{"type":"event","content":"lesson_editor_added_step","data":"\n    <div class=\"panel\">\n        <div class=\"panel-heading\">\n            <span class=\"panel-title\">\n                <a data-toggle=\"collapse\" data-parent=\"#steps\" href=\"#step25\">\n                    asdfasdfasdf\n                <\/a>\n            <\/span>\n            <div class=\"pull-right\">\n                <a href=\"#\" class=\"btn btn-xs btn-success\" data-toggle=\"tooltip\" title=\"Add action\">\n                    <i class=\"fa fa-plus\"><\/i>\n                <\/a>\n                <a href=\"#\" class=\"btn btn-xs btn-warning\" data-toggle=\"tooltip\" title=\"Edit step\">\n                    <i class=\"fa fa-edit\"><\/i>\n                <\/a>\n                <a href=\"#\" class=\"btn btn-xs btn-danger\" data-toggle=\"tooltip\" title=\"Delete step\">\n                    <i class=\"fa fa-times\"><\/i>\n                <\/a>\n            <\/div>\n        <\/div>\n        <div id=\"step25\" class=\"panel-collapse collapse in\">\n            <div class=\"panel-body\" id=\"actions25\">\n                            <\/div>\n        <\/div>\n    <\/div>\n","flashBag":{"success":["Step added"]}}

AJAX 调用

 the URL
$.ajax({
url: url,
type: type,
data: data,
beforeSend: this.options.beforeSendCallback
})
.done($.proxy(function(data) {
if (data.type === undefined) {
alert("Ajax data invalid");
return false;
}
// Switch data type
switch (data.type) {
case 'modal':
// Create modal
$(document).bootstrapModal("createModal", data.content);
break;
case 'redirect':
// Redirect to page
window.location.replace(data.content);
break;
case 'event':
// Fire a custom event
$(document).trigger(data.content, [data.data]);
break;
}
// Check if flashbag exists
if (data.flashBag) {
$.each(data.flashBag, function(type, messages) {
$.each(messages, function(index, message) {
new PNotify({
type: type,
text: message
});
});
});
}
// Fire event
$(document).trigger('ajax_done', [data.data]);
}), this)
.fail(this.options.failCallback);

最佳答案

如果自定义事件是动态的,最好触发:

$(document).trigger(data.content, data.data);

并使用 .on 事件处理程序捕获它:

$(document).on(data.content, function(event, args...) {
// do something beneficial for your career here
});

关于javascript - 使用 jQuery 触发动态自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25619188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com