Jquery 函数被其他函数调用时失败
对jQuery来说是相当陌生的,所以请容忍我 我很难将一个函数的结果传递给另一个函数并执行它 然后重点是将文本作为变量传递给函数populateMessage,并将文本写入文本框 我可以获取文本并将其传递给populateMessage函数,但函数从未完全执行,文本框也未填充。如果我将populateMessage函数包装在document.ready中,并让它编写类似.text'test'的代码;它会起作用的 我怎样才能做到这一点 谢谢你的帮助Jquery 函数被其他函数调用时失败,jquery,Jquery,对jQuery来说是相当陌生的,所以请容忍我 我很难将一个函数的结果传递给另一个函数并执行它 然后重点是将文本作为变量传递给函数populateMessage,并将文本写入文本框 我可以获取文本并将其传递给populateMessage函数,但函数从未完全执行,文本框也未填充。如果我将populateMessage函数包装在document.ready中,并让它编写类似.text'test'的代码;它会起作用的 我怎样才能做到这一点 谢谢你的帮助 $(document).ready(functi
$(document).ready(function () {
getClickedInvite();
});
//gets clicked item template and sends it to message box
function getClickedInvite() {
$('.card').click(function () {
var selectedMessage = $(this).text();
alert(selectedMessage);
populateMessage(selectedMessage);
});
}
function populateMessage(selectedMessage) {
alert(selectedMessage + ' has been sent to the message box ')
var inviteMessageBoxId = $('#inviteMessageBox').find('textarea').attr('id');
alert(inviteMessageBoxId);
$('#' + inviteMessageBoxId).text(selectedMessage);
}
没有必要像那样扩展函数。如果你读了这本书,上面写着 获取当前匹配元素集中每个元素的子元素,并通过选择器、jQuery对象或元素进行筛选 因此,始终不返回单个元素
$('#inviteMessageBox').find('textarea')[0].text(selectedMessage);
或者,如果真的有必要获得身份证
var id = $('#inviteMessageBox').find('textarea')[0].attr('id');
$("#"+id").text(selectedMessage);
jQuery不要求您通过“id”引用所有内容,因此您可以将populateMessage函数更改为如下内容:
function populateMessage(selectedMessage) {
$('#inviteMessageBox')
.find('textarea')
.text(selectedMessage);
}
这仅在$document.ready之后调用时有效的原因是,当您尝试将click事件绑定到带有class.card的所有元素时,它们实际上还不存在于页面上,因此绑定失败 在$document.ready之后;DOM已经完全编写完毕,您可以确信页面上的所有元素都已准备好接受绑定到它们的事件 解决此问题的最佳方法是直接定义函数,并在知道文档准备就绪后将其绑定到元素,如下所示:
function sayHello() {
alert('hello');
}
$(document).ready(function() {
$('.button1').click(sayHello);
$('.button2').click(sayHello);
$('.button3').click(sayHello);
});
这种方法应该能让你的代码更干净。首先引用所有函数,最后绑定事件。单击.card类的成员时是否会收到警报?我根据似乎已从答案列表中删除的答案清除了代码。我将GetClickedVite移动到doc ready中,它似乎起了作用。我认为最大的问题是我的环境,其中textare是一个HTML编辑器。当编辑器处于纯文本区域时,它可以工作,但当编辑器处于富编辑器模式时,它不能工作。谢谢。我的例子是我使用dotnetnuke,textbox html编辑器是一个控件。在呈现时,id前面有一堆与DNN相关的“垃圾”,因此我必须首先获取动态创建的id…正如我在另一篇评论中提到的,我在DotNetNuke上,textarea是一个HTML编辑器控件,因此当它呈现时,元素id前面有DNN控件“垃圾”,因此我必须首先获取textarea的动态id。我试着用你拥有的东西来替换,但没有用我有限的knowledge@MarkHollas谢谢确保你标出了最佳答案和+1个有用的答案。