【问题标题】:Removing a class by selecting the element through multiple classes and a method/selector通过多个类和方法/选择器选择元素来删除一个类
【发布时间】:2018-05-31 17:48:46
【问题描述】:

我针对类似问题搜索了多个不同的回复 - 不一样,并尝试了几种不同的可能性。 (将提供我尝试过的链接)

上下文:

这是一个个人项目,出于此任务的目的,我不允许触摸 HTML 代码。我正在尝试使用 JQuery 删除一个类,以使用 selector/method :last-of-type.last() 选择其父类。

这是我已经尝试过的:

HTML:

<fieldset>
    <div class="form-group">
        <div class="col-sm-8 col-sm-12">
            <input class="form-control" id="Username" name="Username" title="Username is a required field." type="text" value="" placeholder="Username">
        </div>
    </div>

    <div class="form-group">
        <div class="col-sm-8 col-sm-12">
            <input autocomplete="off" class="form-control" id="Password" name="Password" title="Password is a required field." type="password" placeholder="Password">
        </div>
    </div>

    <div class="form-group">
        <div class="col-sm-offset-4 col-sm-8 col-sm-12">
            <div class="checkbox">
                <label>
                    <input id="RememberMe" name="RememberMe" type="checkbox" value="true">
                    <span>Remember me?</span>
                </label>
            </div>
        </div>
    </div>

    <div class="form-group">
        <div class="col-sm-offset-4 col-sm-8 col-sm-12">
            <button id="submit-signin-local" class="btn btn-primary" title="Sign In">Sign In</button>

            <a class="btn btn-default" role="button" href="/ForgotPassword" title="Forgot Password?">Forgot Your Password?</a>

        </div>
    </div>
</fieldset>

和 JQuery:

var lastForm = $('.form-group').last();
$(lastForm+' div.col-sm-12').removeClass('col-sm-offset-4');

该代码的结果是对 HTML 没有任何更改...该类仍然存在并且没有被删除。我相信这里的问题与selector/method 有关。我最初尝试过

$('.form-group div.col-sm-12').removeClass('col-sm-offset-4');

但是看着一堆 StackOverflow 响应,看起来不可能这样做。 jQuery selector with nth-of-type()

我可能正在搜索错误的东西,所以它可能是重复的 - 但经过数小时的搜索 - 我怀疑它

CodePen 适合任何想尝试的人 - https://codepen.io/pen/ERjYXO

【问题讨论】:

  • @NenadVracar 是的,它在帖子中加粗的 JQuery 部分下 :)
  • 我的意思是你的代码笔示例中包含 jquery 库吗?
  • @NenadVracar 哦(捂脸)不,我没有!

标签: javascript jquery html css


【解决方案1】:

你可以试试这个

var lastForm = $('.form-group').last();
$('div.col-sm-12', lastForm).removeClass('col-sm-offset-4');

这是我的代码与你给定的 html

<script type="text/javascript">
    var lastForm = jQuery('.form-group').last();
    console.log(lastForm);
    jQuery('div.col-sm-12', lastForm).removeClass('col-sm-offset-4');
</script>

【讨论】:

  • 感谢您的回复!我刚刚在我的 CodePen 中尝试过,它似乎没有用?
  • 对不起,我的工作很糟糕。下面的 Nenad 提到我的 CodePen 中没有 JQuery!
  • 是的,我注意到了。
【解决方案2】:

使用这个脚本

$("#submit-signin-local").parent().removeClass('col-sm-offset-4');

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<fieldset>
<div class="form-group">
    <div class="col-sm-8 col-sm-12">
        <input class="form-control" id="Username" name="Username" title="Username is a required field." type="text" value="" placeholder="Username">
    </div>
</div>

<div class="form-group">
    <div class="col-sm-8 col-sm-12">
        <input autocomplete="off" class="form-control" id="Password" name="Password" title="Password is a required field." type="password" placeholder="Password">
    </div>
</div>

<div class="form-group">
    <div class="col-sm-offset-4 col-sm-8 col-sm-12">
        <div class="checkbox">
            <label>
                <input id="RememberMe" name="RememberMe" type="checkbox" value="true">
                <span>Remember me?</span>
            </label>
        </div>
    </div>
</div>

<div class="form-group">
    <div class="col-sm-offset-4 col-sm-8 col-sm-12">
        <button id="submit-signin-local" class="btn btn-primary" title="Sign In">Sign In</button>

        <a class="btn btn-default" role="button" href="/ForgotPassword" title="Forgot Password?">Forgot Password?</a>

    </div>
</div>
</fieldset>
<script>
$("#submit-signin-local").parent().removeClass('col-sm-offset-4');

</script>

【讨论】:

  • 有意思!
【解决方案3】:

您可以使用find 方法并选择最后一个元素的直接子&gt; divDEMO

var lastForm=$('.form-group').last();
lastForm.find("> div").removeClass('col-sm-offset-4');

你也可以像这样使用选择器

$(".form-group:last > div").removeClass('col-sm-offset-4');

【讨论】:

    【解决方案4】:

    你能试试这个吗?

    var lastForm = $('.form-group').last();
    $(lastForm).find(".col-sm-offset-4").removeClass("col-sm-12");
    

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多