0

我有一个功能,可以从按钮单击或从输入中的“Enter”键按下。

请看下面的代码

function submit(){
   var tr = obj.closest('tr');
   var some_id = tr.attr('some_id');
}


$(document).ready(function(){

    $('#somebutton').click(submit);
    $('#some_text_input').live('keydown', function(event){
        if (event.keyCode==13) {
            submit($(this));
         }
    });
});

问题是我如何调用函数“提交”并将一个对象传递给我可以将该对象称为 $(this) 的函数

谢谢你的帮助

4

3 回答 3

0

添加 obj 作为参数:

function submit(obj){
    var tr = obj.closest('tr');
    var some_id = tr.attr('id'); // my guess is that you want the id attribute instead of 'some_id'
}
于 2012-08-28T07:00:11.773 回答
0

在实践中,您不需要传递参数来使用 as $(this)this上下文会根据您调用函数的位置而相应更改。如果您在 jQuery 事件中调用函数click,那么this将引用 DOM 元素和$(this)jQuery 对象。

function submit(){
   var tr = $(this).closest('tr');
   var some_id = tr.attr('id');
   alert($(this));
}

$('#somebutton').click(submit); // will alert `#somebutton` jQuery object

顺便说一句,live不推荐使用我建议您使用on.

于 2012-08-28T07:03:20.160 回答
0

我不认为以this非本地方式使用是一个合适的想法。最简单但混乱的方法是正常使用 $(this) ,因为您的函数是从事件中调用的。

或者你可以简单地定义你的参数 obj,它会在你的函数中取值$(this)

function submit(obj)
{
    var tr = obj.closest('tr');
    var some_id = tr.attr('id');
}

.attr()必须与属性的名称一起使用,而不是“某些 id”,而实际上是“id”或“class”。

于 2012-08-28T07:04:08.260 回答