三个可编辑div同步内容:单行jQuery代码失效问题求助
问题原因与解决方案
你的问题出在jQuery方法的返回值上:
当你调用 $("#oimg1").text($(this).text()) 时,这个方法返回的是jQuery对象本身(选中的#oimg1元素),而不是你设置的文本内容。所以你把它传给$("#dimg1").html()时,实际上是把jQuery对象转成字符串(通常是[object Object])赋值给了#dimg1的HTML,这显然不符合需求。
正确的写法
如果想保持代码简洁,优先推荐把文本存到变量里,避免重复获取:
$("#img1").keyup(function() { const content = $(this).text(); $("#dimg1").html(content); $("#oimg1").text(content); });
如果一定要写成单行(不推荐,可读性差),可以用逗号运算符分隔两个操作:
$("#img1").keyup(function() { $("#oimg1").text($(this).text()), $("#dimg1").html($(this).text()); });
本质上,原分开写的代码逻辑是对的——先给#dimg1设置HTML,再给#oimg1设置文本,两者都依赖$(this).text()的结果。合并时不能错误地把一个方法的返回值当作另一个方法的参数,因为jQuery的 setter 方法(带参数的text()/html())返回的都是jQuery对象,用于链式调用,而不是设置后的内容。
内容的提问来源于stack exchange,提问作者Dheeraj Kumar
相关产品推荐
相关产品推荐

