Jquery 函数被其他函数调用时失败

Jquery 函数被其他函数调用时失败,jquery,Jquery,对jQuery来说是相当陌生的,所以请容忍我 我很难将一个函数的结果传递给另一个函数并执行它 然后重点是将文本作为变量传递给函数populateMessage,并将文本写入文本框 我可以获取文本并将其传递给populateMessage函数,但函数从未完全执行,文本框也未填充。如果我将populateMessage函数包装在document.ready中,并让它编写类似.text'test'的代码;它会起作用的 我怎样才能做到这一点 谢谢你的帮助 $(document).ready(functi

对jQuery来说是相当陌生的,所以请容忍我

我很难将一个函数的结果传递给另一个函数并执行它

然后重点是将文本作为变量传递给函数populateMessage,并将文本写入文本框

我可以获取文本并将其传递给populateMessage函数,但函数从未完全执行,文本框也未填充。如果我将populateMessage函数包装在document.ready中,并让它编写类似.text'test'的代码;它会起作用的

我怎样才能做到这一点

谢谢你的帮助

$(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个有用的答案。