JS中的“this”返回了什么?

时间:2012-07-23 17:30:29

标签: javascript jquery

我有两个问题

  1. this指的是什么?我知道它是相关对象的某种容器。

  2. 由于缺少更好的选项,我试图使用表单传递变量。我的想法是<a onclick>onclickthis.form.submit();

  3. <form action="/justtesting/" method="post">   
         <a onclick="this.form.submit();" href="">click this</a>  
         <input name="pageid" value="12" type="hidden">  
         <input name="mid" value="5" type="hidden">  
    </form>
    

    这样我传递变量。

    我以前见过这个,但他们使用按钮而不是<a>

7 个答案:

答案 0 :(得分:2)

答案简短: this指的是调用当前正在执行的函数的对象

答案很长: https://developer.mozilla.org/en/JavaScript/Reference/Operators/this

答案 1 :(得分:1)

&#34;这&#34;没有任何上下文总是引用-window-对象。

var test = 123;

alert(test); // 123
alert(this.test); // 123

您希望获得某种jQuery点击事件,搜索您想要传递的表单提交的任何值。

答案 2 :(得分:1)

这是指当前元素,在您的情况下它引用A标记

如果您使用<Button type="Submit">click this</Button>,那么它将无法使用javascript

如果您使用A标记,则不要保留href属性,因为它可能会导致问题

<a href="javascript:this.form.submit()">click this</a>

答案 3 :(得分:1)

在内嵌绑定(例如元素的onclickonload属性)内,this指的是元素本身。所以,例如:

<a href="http://google.com" onclick="alert(this.href);">Click me</a>
<!-- Alerts "http://google.com" -->

<img src="foo.jpg" width="50" height="50" onload="alert(this.width+'x'+this.height);" />
<!-- Alerts "50x50" -->

所以通过说this.form你说“抓住这个元素所属的形式(如果有的话)”,那么你就是在调用表单元素的submit()方法。

答案 4 :(得分:1)

这是传递给一个事件 say指向作为参数传递给函数的锚对象。

答案 5 :(得分:1)

  1. 对于事件处理程序,“this”指的是有问题的目标事件
  2. 示例:

    <div onclick="console.log(this) id="me">click me</div>   
    

    2。对于对象,它指的是有问题的对象

    示例:

    x = { hi: function(){console.log("Hi "+this.name)}};
    x.name= "Bill";
    x.hi(); // Hi Bill
    

    3这两种行为都可以通过调用所谓的绑定来改变,通过使用bind,apply或call(bind在这里实现)

    var bind = function(obj, fn){ return function(){ return fn.apply(obj, arguments)}
    y.name = "Joe";
    x.hi = bind(y, x.hi);
    x.hi(); //Hi Joe
    

    4如果没有指定,则指的是一个全局对象,它等同于兼容模式下浏览器中的窗口,并且在所谓的严格模式下是未定义的。

答案 6 :(得分:0)

在正常的Javascript事件中,this指的是处理程序绑定的元素。但是,如果您的事件在IE中与attachEvent绑定,则this会引用该窗口。在您的代码中,this指的是点击的锚标记。以下是如何在jQuery中正确实现所需的功能:

$("a").click(function() {
     $(this).closest("form").submit();
 });