gpt4 book ai didi

javascript - JQuery 对新元素没有影响

转载 作者:行者123 更新时间:2023-11-28 11:59:53 24 4
gpt4 key购买 nike

部分 html 被 ajax 调用的结果替换。在测试过程中,我使 ajax 调用与被替换的内容完全相同。问题是我应用于旧 html 的 JQuery UI 和“onClick”内容都没有应用于新 html。我尝试再次调用应用它的函数,但它不起作用。奇怪的是,如果我直接将其输入到 google chrome 的命令中,它就会起作用(new-ajax-html 受到 JQuery 命令的影响)。

这是我的代码,其中包括开始时 html 的原始设置(有效)和第二个设置(在实例化所有所需元素之后进行。):

function set_up() { // <-- if I call this function in the consul, it works.
$('.delete-button').click(function() {
var confirm = window.confirm("Are you sure you want to delete? After you save, this file will not be recoverable.")
if (confirm){
$(this).parent('.deletable-group').remove()
}
});
$('.field-default[data-multi="True"]').makeMulti();
$("input.field-input-date").datepicker();
alert("HERE!") //Is reached both times I call the function. So the code above is executing.
}
var options = {
target: '.server-response-box',
success: function() { //<--- Gets called when the ajax call goes through.
$('.needs-update').each(function( index ) {
url = "/field/1/" + $('.edit-wrapper').attr('data-entry-ID') + "/" + $(this).attr('data-field-id');
old_this = this
$.get(url,function(data){
$(old_this).replaceWith(data);
});
});
set_up(); // Tries to set everything up again.
},
beforeSubmit: function(arr, $form, options) {
}
};
$('#form').ajaxForm(options);
set_up(); //<-- sets it all up the first time.

最佳答案

set_up();//尝试重新设置所有内容。

ajaxForm 成功回调函数中的这一行应该仅在所有 GET 请求执行后执行。

var getRequests = [];
$('.needs-update').each(function( index ) {
url = "/field/1/" + $('.edit-wrapper').data('entry-ID') + "/" + $(this).data('field-id');
old_this = this;
var ajaxGet = $.get(url,function(data){
$(old_this).replaceWith(data);
});
getRequests.push(ajaxGet);
});
$.when.apply($, getRequests).done(set_up); // Tries to set everything up again.

它的作用是为所有 GET 请求创建一个延迟对象数组,当它们完成时,将调用 set_up 函数。

编辑 - 将 .attr(data-stuff) 的使用更改为 .data(stuff)。请注意,.data() 会将值转换为 string/number/bool,但在本例中,它全部连接到 string。将以下内容复制粘贴到控制台即可查看。

$(this).data('id', 1);
var x = "test" + ($(this).data('id') + $(this).data('id'));
var y = "test" + $(this).data('id') + $(this).data('id');
console.log(x); // "test2"
console.log(y); // "test11"

关于javascript - JQuery 对新元素没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17325507/

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