【问题标题】:how to make jquery react when class changes类更改时如何使jquery做出反应
【发布时间】:2011-07-12 16:26:49
【问题描述】:

我有一个简单的带有 jquery 的标签导航。每当单击新选项卡时,脚本都会将类“currentNav”添加到当前导航列表元素,并将其从先前选择的列表元素中删除。现在,每当第二个列表元素获得类“currentNav”时,我想更改母 ul 的背景。开始默认是第一个列表元素有这个类。我的问题是,我不知道如何让 jquery 对这种变化做出反应..

这是导航的html

<ul id="AuktionenNav">
                    <li><a class="tabSelect one currentNav" href="#Tab0" rel="0">Auktionen starten</a></li>
                    <li><a class="tabSelect two" href="#Tab1" rel="1">Eingestellte Auktionen</a></li>
                </ul>

到目前为止,我的 jquery 在这里

if($("ul#AuktionenNav li a.two").hasClass("currentNav")) {
        $("ul#AuktionenNav").css("background-image", "url(../system/css/images/eingestellte_Auktionen.png)")
    }

感谢您的帮助!谢谢!

【问题讨论】:

  • 有了jQuery,你可以把它添加到toggleClass代码中,我们可以看到吗?

标签: jquery class alter


【解决方案1】:

设置触发器和绑定:

// When an <li> (NOT the first one) is clicked, tell the <ul>
$('ul#AuktionenNav li').not(':first-child').click(function(){ 
    $(this).trigger('li_clicked'); 
});

// When the FIRST <li> is clicked, reset the background
$('ul#AuktionenNav li:first-child').click(function(){ 
    $('ul#AuktionenNav').css("background-image", "url(../system/css/images/default.png)");
});
// Listen for an <li> click
$('ul#AuktionenNav').bind('li_clicked',function(){
    $(this).css("background-image", "url(../system/css/images/eingestellte_Auktionen.png)");
});

我知道您的示例只有两个 &lt;li&gt; 标记,但这将很容易扩展,同时保持第一个 &lt;li&gt; 为“重置器”

【讨论】:

  • 谢谢!它完美无缺.. 但还有一个问题,如果有人再次点击第一个 li 元素,我怎样才能恢复默认背景图像?
  • 非常感谢!!我不得不将部分中的“this”与 li:first-child 与 ul#AuktionenNav 交换,但现在它可以完美运行了!我真的很感谢你的帮助! :)
  • 在 c/p 中错过了这一点。谢谢:)
【解决方案2】:

一种方法是使用 DOM 突变事件:

$('ul').bind('DOMSubtreeModified',

function() {
    $(this).closest('ul').addClass('red');
});

$('#toggle').click(
    function(){
        $('ul li:nth-child(2)').toggleClass('highlight');
        return false;
    });

JS Fiddle demo.

【讨论】:

    【解决方案3】:

    HERE IS A DEMO

    $('ul#AuktionenNav li a').click(function() {
        $(this).addClass('currentNav');
        if ($("ul#AuktionenNav li a.two").hasClass("currentNav")) {
            $("ul#AuktionenNav").css("background-image", "url(../system/css/images/eingestellte_Auktionen.png")
        }
    });
    

    【讨论】:

    • what 的演示?请将您的代码与问题和答案保持一致。
    • 谢谢大卫...我只是添加它,请等待 15 秒。
    • @Sebsemillia 很高兴你成功了!快乐的编码,别忘了有时喝杯咖啡! ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2020-06-15
    • 2015-12-30
    相关资源
    最近更新 更多