基于类更改的触发function
我有以下内容。 我试图根据css类更改触发函数,但它不起作用。
jQuery(document).ready(function(){ jQuery("#slider-banner").bind("cssClassChanged",function(){ console.log("I'm Here!"); if(jQuery("#slider-banner").hasClass('living-nutrients')) { jQuery("#home-middle-first").css("background-image","url([image path])"); } else if(jQuery("#slider-banner").hasClass('right-partner')) { jQuery("#home-middle-second").css("background-image","url([image path])"); } else if(jQuery("#slider-banner").hasClass('with-you')) { jQuery("#home-middle-third").css("background-image","url([image path])"); } }); jQuery("#slider-banner").trigger('cssClassChanged');
colsole在页面加载时显示我的console.log消息,但在页面加载后类再次更改时则不显示。 有谁看到我做错了什么?
更新:
所以我已经知道“cssClassChanged”不合法……我试图调整我在其他地方找到的答案……我确实意识到如果jQuery是武器,我会很危险! (知道这是战斗的一半,对吧?)
我尝试调整gdoron的答案与以下相关:
jQuery(document).ready(function() { function checkForChanges() { if(jQuery("#slider-banner").hasClass('living-nutrients')) { jQuery("#home-middle-first").css("background-image","url([image path])"); } else if(jQuery("#slider-banner").hasClass('right-partner')) { jQuery("#home-middle-second").css("background-image","url([image path])"); } else if(jQuery("#slider-banner").hasClass('with-you')) { jQuery("#home-middle-third").css("background-image","url([image path])"); } else setTimeout(checkForChanges, 500); } });
不过,我仍然缺少一些东西。 它仅适用于页面加载的第一个类。
有人问我是怎么改变课程的。 我正在使用一个滑块,每个幻灯片上都有一个ID为“slider-banner”的div,并且该类会根据我尝试切换背景图像的三个ID’d区域中的哪一个而变化。
没有这样的事件cssClassChanged
我认为这解释了所有……
10个小时前我回答了你如何发现class级变化, 在那里读了我的答案
更新:
function checkForChanges() { var sliderBanner = jQuery("#slider-banner"); if(sliderBanner.hasClass('living-nutrients')) { jQuery("#home-middle-first").css("background-image","url([image path])"); } else if(sliderBanner.hasClass('right-partner')) { jQuery("#home-middle-second").css("background-image","url([image path])"); } else if(sliderBanner.hasClass('with-you')) { jQuery("#home-middle-third").css("background-image","url([image path])"); } setTimeout(checkForChanges, 500); } jQuery(checkForChanges);
没有名为“cssClassChanged”的内置事件。 您已创建自己的自定义事件,并在页面加载期间手动触发它。 它不会自动trigger('cssClassChanged')
– 每次更改CSS类时都必须调用trigger('cssClassChanged')
。
我没有cssClassChanged
事件,您需要手动触发它。 但是,您没有更改您发布的代码中的类,因此我不确定您想要触发它的位置。
您可以在幻灯片(上一个/下一个)按钮上连接您自己的单击事件监听器 – 除了现有按钮之外,还将添加它们。
在你的事件监听器中,你可以检查css-class中你感兴趣的元素。
$(".prev").on("click", function() { //user has explicitly clicked "prev"!! }); $(".next").on("click", function() { //user has explicitly clicked "next"!! });