这是jquery / javascript中的正确语法吗?

时间:2012-05-18 15:59:56

标签: javascript jquery if-statement

在下面的jquery中,应该在“dot”之前有一个关闭的paretheses“)”:

.test($ ......”?

(/^\s*$/.test($(this).val()))

$(document).ready(function () {
    $('#userlogin').css('color', '#cccccc').val('LOGINNAME');   

    $('#userlogin').blur(function () {
        if (/^\s*$/.test($(this).val())) {
            $(this).val('LOGINNAME');
            $(this).css('color', '#cccccc');
            $(this).valid();
        }
    }).focus(function () {
        if ($(this).val() === 'LOGINNAME') {
            $(this).val('');
            $(this).css('color', '#000000');
        }
    });

如果没有,为什么不呢?那段代码对我来说有点奇怪。

4 个答案:

答案 0 :(得分:4)

代码是正确的:

/^\s*$/  // create a regex
  .test( // call the test method on it
    $(this) // create a jquery object
      .val() // call the val method on it
  )

但是,可以缓存该值:var val = $(this).val();。 然后,这一行可能不会让您感到困惑:/yourregex/.test(val)

答案 1 :(得分:2)

/^\s*$/是一个正则表达式文字,它有一个被调用的测试方法。括号来自if条件,它更大。

由于javascript完全面向对象,即使文字也可以有方法。

答案 2 :(得分:2)

/^\s*$/.test( $(this).val() )

第一部分是正则表达式 - 不是字符串或其他任何东西。因此,它以分隔符//开始和结束。

使用.match有时更清晰,因为它似乎没有在源中浮动一些奇怪的未绑定项目:

$(this).val().match(/^\s*$/);

这个特殊的表达方式,如下所示:

/^   // Beginning of String
\s*  // Space, zero or more times
$/   // End of String

因此,如果从开始到结束都有零个或多个空格,那么它将测试为正数。

答案 3 :(得分:2)

代码很好。如果你认为它不可读,为什么不先创建正则表达式

var regex = /^\s*$/;
if(regex.test($(this).val())
    ...