簡體   English   中英

這是jquery / javascript中的正確語法嗎?

[英]is this correct syntax in jquery/javascript?

在下面的jquery中,在“點”之前應該有一個關閉的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');
        }
    });

如果沒有,為什么不呢? 那段代碼對我來說有點奇怪。

代碼是正確的:

/^\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)

/^\\s*$/是一個正則表達式文字,它有一個被調用的測試方法。 括號來自if條件,它更大。

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

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

第一部分是正則表達式 - 不是字符串或其他任何東西。 因此,它以deliminters //開頭和結尾。

使用.match有時更清晰,因為它似乎沒有在源中浮動一些奇怪的未綁定項目:

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

這個特殊的表達式,如下所示:

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

因此,如果從開始到結束都有零個或多個空格,那么它將測試為正,而沒有別的。

代碼很好。 如果你認為它不可讀,為什么不先創建正則表達式

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM