2016-05-19 9 views
0

こんにちは、私は現在、私のJavascriptクラスのJQueryを練習しています。私はナマケの進歩をしましたが、うまくいくものが得られると感じています。 (ログインフォームをスライドさせてプラスマイナスに変更する)マイナスクラスをプラスに戻して、今のようにフォームを気にしないようにしているようです。誰かが私のコードで何が間違っているか教えてもらえますか?完全なノブを許してください。イメージ/クラスをJqueryでクリックして変更しますか?

//Fading in Advertisent 
 
$(document).ready(function() { 
 
    $("#ad").animate({ 
 
    top: '100px', 
 

 
    }); 
 

 
    //Closing The Advertisement 
 
    $("#adbtn").click(function() { 
 
    $("#ad").fadeOut(5000); 
 
    }); 
 

 
    $(".plus").click(function() { 
 
    $("form").slideToggle(500); // half second duration 
 
    $(".plus").removeClass("plus").addClass("minus"); 
 
    }); // end function 
 

 
}); // end function 
 

 
$(document).ready(function() { 
 
    $("#ad").animate({ 
 
    top: '100px', 
 

 
    }); 
 

 
    //Closing The Advertisement 
 
    $("#adbtn").click(function() { 
 
    $("#ad").fadeOut(5000); 
 
    }); 
 

 
    $(".plus").click(function() { 
 
    $("form").slideToggle(500); // half second duration 
 
    $(".plus").removeClass("plus").addClass("minus"); 
 
    }); // end function 
 

 
    $(".minus").click(function() { 
 
    $("form").slideUp(500); // half second duration 
 
    $(".minus").removeClass("minus").toggleClass("plus"); 
 
    }); // end function 
 

 
}); // end function
body { 
 
    background-color: #fff; 
 
    font-family: arial, sans-serif; 
 
    font-size: 100%; 
 
} 
 
a { 
 
    color: blue; 
 
} 
 
#welcome p strong { 
 
    color: navy; 
 
    font-size: 1.2em; 
 
} 
 
#welcome p:first-of-type { 
 
    margin-bottom: 50px; 
 
} 
 
section { 
 
    margin-bottom: 50px; 
 
} 
 
/* main container */ 
 

 
#main { 
 
    width: 960px; 
 
    margin: 50px auto; 
 
    border: 2px solid #000; 
 
    padding: 20px; 
 
    background-color: #e0e0ff; 
 
    position: relative; 
 
    box-sizing: border-box; 
 
} 
 
/* form container */ 
 

 
#loginDiv { 
 
    width: 300px; 
 
    position: absolute; 
 
    left: 650px; 
 
    top: 6px; 
 
    z-index: 100; 
 
    border: 1px solid navy; 
 
} 
 
/* paragraph that shows the text "Login" which is clicked on to display/remove the form */ 
 

 
#login { 
 
    margin: 0; 
 
    cursor: pointer; 
 
    background-color: rgb(255, 255, 255); 
 
    padding: 5px 0 2px 30px; 
 
} 
 
#login:hover { 
 
    background-color: rgb(110, 138, 195); 
 
} 
 
/* plus sign icon for login form */ 
 

 
.plus { 
 
    background: url(img_open.png) no-repeat 8px 7px; 
 
    background-color: rgb(110, 138, 195); 
 
} 
 
/* minus sign icon for login form */ 
 

 
.minus { 
 
    background: url(img_close.png) no-repeat 8px 7px; 
 
} 
 
/*form is hidden when the page loads */ 
 

 
#loginDiv form { 
 
    padding: 10px 10px 10px 10px; 
 
    display: none; 
 
    background-color: rgb(255, 255, 255); 
 
} 
 
#loginDiv label { 
 
    display: block; 
 
    width: 100px; 
 
    margin: 0 15px 0 0; 
 
} 
 
#loginDiv input { 
 
    font-size: 1.2em; 
 
    border: 1px solid navy; 
 
} 
 
#loginDiv input:focus { 
 
    background-color: rgb(110, 138, 195); 
 
    border: 2px solid navy; 
 
} 
 
#loginDiv input[type=button] { 
 
    width: 100px; 
 
} 
 
footer { 
 
    text-align: center; 
 
    margin-top: 50px; 
 
    margin-bottom: 10px; 
 
    padding: 20px; 
 
    border-top: 1px solid #000; 
 
} 
 
/* ad is not shown when the page loads */ 
 

 
#ad { 
 
    width: 300px; 
 
    height: 300px; 
 
    border: 1px solid #000; 
 
    background-color: yellow; 
 
    position: absolute; 
 
    left: 330px; 
 
    top: -500px; 
 
    /* you can change this inbitially for viewing purposes only but be sure to set it back */ 
 
    box-sizing: border-box; 
 
    background-image: url(ad.jpg); 
 
    background-repeat: no-repeat; 
 
} 
 
/* close button on ad */ 
 

 
#adbtn { 
 
    width: 50px; 
 
    height: 50px; 
 
    border: 2px solid #000; 
 
    border-top-width: 1px; 
 
    border-right-width: 1px; 
 
    background-color: #fff; 
 
    font-size: 3em; 
 
    text-align: center; 
 
    cursor: pointer; 
 
    box-sizing: border-box; 
 
    position: absolute; 
 
    top: 0px; 
 
    right: 0px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<!-- main container --> 
 
<div id="main"> 
 
    <section id="loginDiv"> 
 
    <!-- when this is clicked on the below form should be displayed and plus sign should change to minus sign--> 
 
    <p id="login" class="plus">Login</p> 
 
    <form> 
 
     <p> 
 
     <label for="username">Username:</label> 
 
     <input type="text" name="username" id="username"> 
 
     </p> 
 
     <p> 
 
     <label for="pw">Password:</label> 
 
     <input type="password" name="pw" id="pw"> 
 
     </p> 
 
     <p> 
 
     <input type="button" value="Submit"> 
 
     </p> 
 

 
     <!-- placeholder for response if form data is correct/incorrect --> 
 
     <p id="error"></p> 
 
    </form> 
 
    </section> 
 
    <section id="welcome"> 
 
    <h1>Welcome to the Local jQuery User Group Website</h1> 
 
    <p> <strong>Click the login button at the top of the page to login. To become a member please <a href="#">Register</a></strong> 
 
    </p> 
 
    <h2>About this page layout:</h2> 
 
    <p>The main container (parent) has 'relative' positioning so that the 'login' container can be absolutley positioned with respect to that main container. Otherwise, it would default to being absolutley positioned with respect to the window.</p> 
 
    <p>In order for the login panel to be placed on top of the page we need to use absolute positioning, otherwise, it would move the rest of the content down as done in the FAQ assignment. Technically, absolute positioning takes that element out of the 
 
     normal flow of the document, so that it is on top of the page. The 'ad' is also absolutely positioned to the same main container.</p> 
 
    </section> 
 
    <section> 
 
    <h2>This week's agenda:</h2> 
 
    <p>There will be a live meeting this Tuesday evening from 7:00pm to 8:00pm PST using our WebEx Conferencing Software. It will be recorded! Please note that the code samples will be available on our GitHub repository.</p> 
 
    </section> 
 
    <footer>Copyright &copy; Local jQuery User Group</footer> 
 

 
    <!-- ad which is absolutely positioned -500px from the top so you do not see it when page loads--> 
 
    <div id="ad"> 
 
    <div id="adbtn">X</div> 
 
    </div> 
 

 
    <!-- end main container --> 
 
</div>

答えて

2

代わりremoveClassaddClasstoggleClassを使用することができます。また、ハンドル関数内の.plusセレクタを変更して要素(this)を参照する必要があります。

$(".plus").click(function(){ 
     $("form").slideToggle(500); // half second duration 
     $(this).toggleClass("plus").toggleClass("minus"); 
}); // end function 
+0

$(this).toggleClass( "plus")。toggleClass( "minus"); 「this」はplusのこの特定の要素を指していますか?他にどのように$(これ)ができましたか。利用される? – BlackRoseGoat

+0

この種のイベントハンドラ定義では、thisキーワードはハンドラが参照する要素を参照します。これは、click()に送られた関数の中で、プラスクラスを失うことになっても、特定の.plus要素を参照することを意味します。ですから、$(this)はこれのDOM要素にアクセスするためのjQueryのアプローチです。 $( '。plus')参照を使用した場合、要素が 'マイナス状態'になると機能しなくなり、機能が損なわれます。 キーワードは、作成されている通話の種類によって異なります。 –

+0

提出する前にログインフォームを検証するためにjqueryを書いている限り、正しい方向へ一歩手伝ってもらえますか?フィールドに必要なのは、何らかのタイプの文章だけです。投稿をフィールドに入力せずにプッシュした場合、エラー警告が表示されるはずです – BlackRoseGoat

関連する問題