2017-08-09 66 views
2

我有一個代碼,有人寫道,我試圖包裹我的頭。 jquery文檔說:「可見選擇器選擇當前可見的每個元素。」並且代碼看起來是這樣的:jquery:可見性選擇器的使用

<form action="register.php" method="post"> 
    <div class="error-test e-name">Enter Name</div> 
    <input name="name" type="text"/> 
    <div class="error-test e-email">Enter Email</div> 
    <input name="email" type="email"/> 
    <div class="error-test e-password">Enter Password</div> 
    <input name="password" type="password"/> 
    <button class="register" type="submit">Register</button> 
</form> 

和jQuery代碼看起來是這樣的:

$(document).on('click', '.register', function(d) 
    { 
    if ($('.error-test').is(":visible")) 
     { 
     d.preventDefault(); 
     alert('please fill the form properly before submitting.'); 
     } 
    else 
     { 
     // do something 
     } 

And the CSS: 
<style> 
    .error-test 
     { 
     display: none 
     } 
</style> 

所以我的問題是,有人可以解釋這一行是做:如果($('。error-test')。is(「:visible」))

並解釋爲什麼需要設置css來顯示:無。我無法將頭圍繞在:可見選擇器上。 預先感謝您。

回答

1

$('.error-test').is(":visible")尋找具有classerror-test的元素並將其包裝在一個jQuery對象中。之後,方法is檢查對象是否在DOM中可見。如果爲true,則if子句將運行。

在CSS中元素的顯示設置爲none時,它不會出現在頁面上,因此visible

基本上,整個代碼所做的是: 檢查是否有任何錯誤div可見,如果是真正的中止和警報,如果爲假,繼續張貼表單。

2

if ($('.error-test').is(":visible"))檢查當前是否有任何錯誤消息在屏幕上可見。如果是,則d.prevenDefault()停止提交併顯示警報。 .error-test最初有display:none,所以它不在屏幕上,js代碼的某些部分必須使其可見。