如何让jquery$(this)在必须向其传递变量的函数中工作?

如何让jquery$(this)在必须向其传递变量的函数中工作?,jquery,Jquery,我正在努力做一些我认为应该很容易的事情。谢谢你的帮助 我想在单击时调用javascript函数,将两个变量传递给它,然后使用jquery隐藏该范围。一个简单的例子是 function myFunction(data1,data2) { var data = data1+data2; alert(data); $(document).ready(function(){ $(this).hide(); <---doesn't work }); } <span onClick="myFu

我正在努力做一些我认为应该很容易的事情。谢谢你的帮助

我想在单击时调用javascript函数,将两个变量传递给它,然后使用jquery隐藏该范围。一个简单的例子是

function myFunction(data1,data2) {
var data = data1+data2;
alert(data);
$(document).ready(function(){
$(this).hide(); <---doesn't work
});
}

<span onClick="myFunction(1,3)">Click here to send 1, 3 and hide this span</span>
<span onClick="myFunction(8,9)">Click here to send 8, 9 and hide this span</span>
函数myFunction(数据1、数据2){
var数据=数据1+数据2;
警报(数据);
$(文档).ready(函数(){

$(this).hide();您试图
.hide()
$(文档)
而不是span

不太清楚为什么要把它放在doc-ready语句中…像这样尝试一下

function myFunction(span,data1,data2) {
    var data = data1+data2;
    alert(data);
    $(span).hide();
}

<span onClick="myFunction(this,1,3)">Click here to send 1, 3 and hide this span</span>
<span onClick="myFunction(this,8,9)">Click here to send 8, 9 and hide this span</span>
函数myFunction(span、data1、data2){
var数据=数据1+数据2;
警报(数据);
$(span).hide();
}
单击此处发送1、3并隐藏此范围
单击此处发送8、9并隐藏此范围

您试图
.hide()
$(文档)
而不是span

不太清楚为什么要把它放在doc-ready语句中…像这样尝试一下

function myFunction(span,data1,data2) {
    var data = data1+data2;
    alert(data);
    $(span).hide();
}

<span onClick="myFunction(this,1,3)">Click here to send 1, 3 and hide this span</span>
<span onClick="myFunction(this,8,9)">Click here to send 8, 9 and hide this span</span>
函数myFunction(span、data1、data2){
var数据=数据1+数据2;
警报(数据);
$(span).hide();
}
单击此处发送1、3并隐藏此范围
单击此处发送8、9并隐藏此范围

初始化JS,然后加载函数。不应该将
ready
函数嵌套在其中

另外,您可以将
作为函数参数传递,以引用调用该函数的对象,如下所示(另外,
onClick
无效。
onClick
有很大区别,是吗?):

函数myFunction(即,数据1,数据2){
var数据=数据1+数据2;
警报(数据);
$(that).hide();//无法使用此选项,因此将正常工作。
}
单击此处发送1、3并隐藏此范围
单击此处发送8、9并隐藏此范围

初始化JS,然后加载函数。不应该将
ready
函数嵌套在其中

另外,您可以将
作为函数参数传递,以引用调用该函数的对象,如下所示(另外,
onClick
无效。
onClick
有很大区别,是吗?):

函数myFunction(即,数据1,数据2){
var数据=数据1+数据2;
警报(数据);
$(that).hide();//无法使用此选项,因此将正常工作。
}
单击此处发送1、3并隐藏此范围
单击此处发送8、9并隐藏此范围

jondavidjohn是对的。但是,在html中嵌入事件处理程序是一种不好的做法。应该是这样的:

function myFunction(data1,data2) {
    var data = data1+data2;
    alert(data);
    $(this).hide();
}
$(document).ready(function(){
   $("#span1").click(function(){
     myFunction(1,3);
   });
   $("#span2").click(function(){
     myFunction(8,9);
   });
});

单击此处发送1、3并隐藏此跨度
单击此处发送8、9并隐藏此范围

希望这有帮助。

jondavidjohn是对的。但是,在html中嵌入事件处理程序是一种不好的做法。应该这样做:

function myFunction(data1,data2) {
    var data = data1+data2;
    alert(data);
    $(this).hide();
}
$(document).ready(function(){
   $("#span1").click(function(){
     myFunction(1,3);
   });
   $("#span2").click(function(){
     myFunction(8,9);
   });
});

单击此处发送1、3并隐藏此跨度
单击此处发送8、9并隐藏此范围

希望这能有所帮助。

你真的只是在2分钟后复制/粘贴了我的答案吗?不,我正在做,然后你的答案出现了。我想你也编辑了。没有很多其他方法可以做到这一点,所以不要认为我复制/粘贴了你的答案(为什么会有人?).你真的只是在2分钟后复制/粘贴了我的答案吗?不,我正在做,然后你的答案出现了。我想你也编辑了。没有很多其他方法可以做到这一点,所以不要认为我复制/粘贴了你的答案(为什么会有人??).Lol和我的答案基本相同。Lol和我的答案基本相同。Lol和我的答案基本相同。除了你试图
.hide()
全局窗口对象,这肯定不起作用…另外,如果你提供这样的答案,还包括他将如何用php注入
myFunction()的参数。
我可以问一下,为什么这是一种不好的做法吗?引用问题…
“变量(1,3)和(8,9)是用php脚本动态加载的。”
jondavidjohn,你错了。当事件绑定到
bind
,(或者在本例中,
单击
)时,上下文设置为“绑定”元素,因此
引用的是跨度,而不是窗口对象。如果您仍然不同意,请在浏览器中尝试代码。Blender,混合html属性和javascript是一种令人讨厌的做法,并且自DOM级别2以来一直被弃用。编写不引人注目的代码是一种更好的做法(更易于维护,更容易分离,等等)网络上有很多信息,你可以搜索关于“不引人注目的javascript”的更多信息,除了你试图
.hide()
全局窗口对象,这肯定不起作用……此外,如果你提供这样的答案,还包括他将如何注入
myFunction()的参数
使用php…为什么这是一种不好的做法,我可以问一下吗?引用问题…
“变量(1,3)和(8,9)是用php脚本动态加载的。”
jondavidjohn,你错了。当事件绑定到
bind
,(或者在本例中,
单击
)时,上下文设置为“绑定”元素,因此
引用的是跨度,而不是窗口对象。如果您仍然不同意,请在浏览器中尝试代码。Blender,混合html属性和javascript是一种令人讨厌的做法,并且自DOM级别2以来一直被弃用。编写不引人注目的代码是一种更好的做法(更易于维护,更容易分离,等等)网上有很多信息,你可以搜索关于“不引人注目的javascript”的更多信息