我在这样的jsp中有一个div:
在对servlet进行ajax调用之后,此div附加为:
Connected as user : Tony
You selected the procedure : lg_resultsretrieval
我为textarea编写了一个jquery函数,如下所示:
//submits only when the textbox value is valid $("#response").on("change", function() { $("#Execute").click(function () { if ($(".txtarea").val() == this.defaultValue) { alert("Please insert a valid value"); return false; } }); $("txtarea") .focus(function() { if (this.value === this.defaultValue) { console.log('inside focus function'); this.value = ''; } }) .blur(function() { if (this.value === '') { this.value = this.defaultValue; } }); });
问题是,上面的代码不起作用,虽然在jquery文档中它表示在动态加载元素的函数上使用.我如何使其工作?请建议
如果div
在DOM中替换它本身,那么附加到它的任何处理程序确实div
会丢失.请注意如何在此处附加处理程序:
$("#response").on("change", function() { // code });
这div
会将处理程序直接附加到$("#response")
评估选择器时的状态.处理程序附加到元素,而不是动态选择器.为了保留添加/替换的元素的处理程序,您需要绑定到父元素并过滤目标元素.像这样的东西:
$(document).on("change", "#response", function() { // code });
这会将处理程序绑定到document
对象,该对象不会更改,因此处理程序不会在子元素更改时丢失.(作为参考,我实际上昨天刚刚在博客上发表过这篇文章.)