在每个引导转盘幻灯片上重新计算相同的javascript变量
我有一个popin/modal,其中包含一个bootstrap3旋转木马。在旋转木马的每张幻灯片上都会出现不同的社交嵌入,如facebook或,我想根据图像的大小调整modal/popin的宽度 我基本上要做的是改变后台幻灯片模式的宽度,因此使用我的后端语言Ruby:在每个引导转盘幻灯片上重新计算相同的javascript变量,javascript,jquery,ruby,twitter-bootstrap,Javascript,Jquery,Ruby,Twitter Bootstrap,我有一个popin/modal,其中包含一个bootstrap3旋转木马。在旋转木马的每张幻灯片上都会出现不同的社交嵌入,如facebook或,我想根据图像的大小调整modal/popin的宽度 我基本上要做的是改变后台幻灯片模式的宽度,因此使用我的后端语言Ruby: $("ul.messenger.messenger-fixed").css("width",insta_classic_size); 整个守则是: <div class="item <% if index == 0
$("ul.messenger.messenger-fixed").css("width",insta_classic_size);
整个守则是:
<div class="item <% if index == 0 %>active<% end%>">
<% if slide['modal_slide_type'] == "instagram" %>
<script>
var insta_size = Math.max( Math.floor(embedWidth), 320);
$("ul.messenger.messenger-fixed").css("width",insta_size);
</script>
<% elsif slide['modal_slide_type'] == "twitter" %>
<script>
var twitter_size = Math.floor(embedWidth);
$("ul.messenger.messenger-fixed").css("width",twitter_size);
</script>
and so on... many different other types of slides...
我的问题是,当我加载modal/popin时,所有脚本都会执行,也就是说,在上面的示例中,和..的两个块的值$ul.messenger.messenger fixed的宽度被设置为正在执行的最新块,这意味着twitter_大小。
因此,即使是第一个块也会将$ul.messenger.messenger的宽度设置为twitter_大小,而不是我想要的,也就是说,宽度等于insta_大小
基本上,我需要知道如何防止代码执行所有脚本,或者告诉他在每张幻灯片变为visible=active时重新计算其值
我尝试使用了一些,但没有成功。我不是使用过ruby的人,但肯定只调用了到达的“if”块中的脚本?不是这样吗?无论哪种方式,您都可以尝试以下方法: 初始化所有旋转木马的代码
...
<div id="myCarousel" class="carousel slide" data-ride="carousel">
...
控制台将根据活动幻灯片输出“twitter”或“instagram”。然后可以使用此事件触发所需的任何计算
myCarousel.on('slide.bs.carousel', function (e) {
var activeSlide = e.relatedTarget.dataset.slidetype
if ( activeSlide == "instagram" ) {
// Insta calculations
} else if ( activeSlide == "twitter" ) {
// twitter calculations
}
});
虽然这都是从JS的角度来看的,但也许你可以挽救一些东西。使用分配给各个项目的数据属性,但是如果子项包含您需要的信息,您可以使用其他属性或查看子项。非常感谢您的帮助。
myCarousel.on('slide.bs.carousel', function (e) {
console.log(e.relatedTarget.dataset.slidetype);
});
myCarousel.on('slide.bs.carousel', function (e) {
var activeSlide = e.relatedTarget.dataset.slidetype
if ( activeSlide == "instagram" ) {
// Insta calculations
} else if ( activeSlide == "twitter" ) {
// twitter calculations
}
});