【问题标题】:How to change a class' properties after addClass()如何在 addClass() 之后更改类的属性
【发布时间】:2016-01-16 21:51:46
【问题描述】:

我有一个发送电子邮件的表单。我将数据发送到 AJAX,然后发送到 php 文件。当数据成功发送时,我的ajax中有一个成功函数。如果数据发送成功,我希望将表单发送到display: none;(我已经完成)并出现一个新类。我知道这可以通过 addClass() 方法来完成。但是,我不明白我怎么能做到这一点。原因是我创建了一个带有成功消息的简单div,所以在页面加载时我隐藏了那个div。所以,我的想法是删除email-success 的类,因为我将它设置为display: none;,然后添加其子div 的类email-success-container。这不起作用。

有谁知道我如何做到这一点?

<div class="white-green">
  <!-- The success div when the email is successfully sent .. I want this to show after email sends-->
  <div class="email-success">
    <div class="email-success-container">
      <div id="email-success-title">THANK YOU FOR CONTACTING OUR AGENCY!</div>
      <div id="email-success-description">Your submission has been received and one of our team members will contact you shortly.</div>
    </div>
  </div>
  <div class="project-container">
        <div class="project-input-container">
  <!-- Form for email.... it shows on page load-->
  <form action="" autocomplete="on" method="POST" id="project-information-form">
    <input type="text" class="input-borderless" id="project-name" placeholder="Your Name">
    <input type="text" class="input-borderless" id="title-roll" placeholder="Title/Role">
    <input type="email" class="input-borderless" id="project-email" placeholder="Email Address">
    <input type="text" class="input-borderless" id="project-number" placeholder="Phone Number">
    <input type="text" class="input-borderless" id="project-company" placeholder="Company/URL">
</div>
<div class="project-input-container2">
  <textarea rows="3" class="input-borderless" id="project-description" placeholder="Describe the project"></textarea>
  <input type="text" class="input-borderless" id="project-source" placeholder="How did you hear about us?">
  <input type="text" class="input-borderless" id="project-socialMedia" placeholder="Which of our social media influenced you the most?">
  <input type="text" class="input-borderless" id="project-humanTest" placeholder="Human Test: What day comess after Thursday?">
</div>
<input type="submit" id="submit-project" value="Send Project Inquiry">
</form>
</div>

我的 ajax 成功:

success: function (data) {
    //console.log(data); // data object will return the response when status code is 200
    if (data == "Error!") {
        alert("Unable to send email!");
        alert(data);
    } else {
        $(".project-container").addClass("removeClass");
        $(".white-green").addClass("email-success-container");
        $(".white-green").removeClass("email-success");
        $(".announcement_success").fadeIn();
        $(".announcement_success").show();
        $('.announcement_success').html('Email Successfully sent!');
        $('.announcement_success').delay(5000).fadeOut(400);
    }
},

电子邮件发送后我试图显示的 div 的 CSS:

.removeClass {
    display: none;
}
.email-success {
    display: none;
}
.email-success-container {
    margin-left: 9%;
    margin-top: 250px;
}
#email-success-title {
    color: #ba5a45;
    font-size: 3em;
}
#email-success-description {
    color: #ba5a45;
    font-size: 2em;
}

有谁知道我可以做些什么来完成这项工作?

【问题讨论】:

  • HTML 中的class=project-container 在哪里?
  • 对于你正在做的事情,听起来只是调用.hide().show() 会比玩类更简单。
  • 如果页面加载时没有显示,为什么要在success函数里做点什么才不显示呢?我假设您在 AJAX 请求显示之前已经做了一些事情,然后成功函数需要撤消它以使其再次不可见。
  • $(".email-success").show() 会显示它。
  • .hide().show() 在元素上使用内联样式,因此它们优先于 CSS。

标签: javascript jquery html ajax class


【解决方案1】:

您可以使用.show().hide() 覆盖display: none; CSS。

$(".email-success").show();

这使用内联样式属性,它优先于样式表。

【讨论】:

    【解决方案2】:

    您可以使用$(".classname").css("property","value"); 例如:$(".email-success").css("display","block");

    这是更通用的解决方案,因为您可以更改任何您想要的属性,而不仅仅是显示

    【讨论】:

    • 那么,我可以在我的success: 中使用它并更改其中的类的属性吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多