jquery this,$ this,$ element和$('#''+ element)

时间:2015-09-25 01:56:35

标签: jquery this

如果我需要使用动态ID,请执行以下操作...

var element=this.id
$('#'+element).val(value)

但为什么这样的东西不起作用,是否有另一种表达jquery id的方法?

(this.id).val(value)
$(this).val(value)

使用'$'创建变量有什么用?

var $elem=foo

我意识到这可能是jquery 101但我无法找到答案,可能是因为不知道该搜索什么!

这是我正在处理的代码示例,其中$(this).val(value)不起作用,但$('#'+ nextInput).val(value)确实...

$(function(){                                                                                
    $('.copyText').keyup(function(){
        var inputStart=this.id
        var value=this.value
        var allInputTexts=$('#body').find('input[type=text]:enabled:not([readonly])');

        allInputTexts.each(function(index, item){
            var matchingInput=this.id

            if (inputStart==matchingInput) {
                var nextInput=allInputTexts[index+1].id
                //$('#'+nextInput).val(value)
                $(this).val(value)
                //return false;
            }
        })
    });
});

2 个答案:

答案 0 :(得分:2)

$(this.id).val(value);

不起作用,因为您必须在选择器中使用#前缀来指示您要搜索ID。 this.id只有ID,前面没有#

$(this).val(value);

应该有用,我不明白为什么你认为它没有。

$开头的变量没什么特别之处。但是一些程序员喜欢将它用作包含jQuery对象而不是普通DOM元素或普通值的变量的命名约定。

答案 1 :(得分:1)

如果有效

var element=this.id;
$('#'+element).val(value);

那么这也应该有用

$('#' + this.id).val(value);

和这个

$(this).val(value);

变量前面的美元符号通常用于表示变量是围绕DOM元素的jQuare包装:

var $elem=$(this);