使用jQuery 1.11.1和这段代码来检测select字段值的更改,然后运行一些脚本。它工作一次然后不会再次工作。它已足够远,可以删除“可见”字样。上课,那就是它。
var oatChoice;
$('#cereal').change(function(){
oatChoice = ($(this).val());
$('.oats').removeClass('visible').delay(1000).queue(function() {
imageURL = '/assets/images/layers/oats-' + oatChoice;
imgSwitch('.oats',imageURL);
$('.oats').addClass('visible');
});
});
imgSwitch = function(div,imgURL){
$(div + ' img').remove();
$(div).append('<img src="' + imgURL + '.png"/>');
}
我在下面的html位置运行此代码:
<div class="layer oats">
<img src="/assets/images/layers/oats-applecinnamon.png" alt="">
</div>
<select name="cereal" id="cereal" class="form-control">
<option value="">- Select A Cereal -</option>
<option value="applecinnamon">Apple Cinnamon Oatmeal</option>
<option value="vanilla">Vanilla</option>
</select>
我在这里创建了一个小提琴.. http://jsfiddle.net/aehj289o/1/图像丢失了,但你可以看到它在第一次出现后就退出了工作。
答案 0 :(得分:0)
试试这个:
$('#cereal').unbind('change').change(function(){
//the rest of your code
})
编辑:您可以尝试将您的变量和函数从全局范围中取出,并使用每个更改操作重新呈现该函数,如下所示:
(function(main, $, undefined){
Template = {
oatChoice:null,
render: function(){
Template.setup.changeActions();
}
setup: {
changeActions : function(){
$('#cereal').unbind('change').change(function(){
Template.oatChoice = ($(this).val());
$('.oats').removeClass('visible').delay(1000).queue(function() {
imageURL = '/assets/images/layers/oats-' + Template.oatChoice;
Template.imgSwitch('.oats',imageURL);
$('.oats').addClass('visible');
});
Template.render();
});
}
},
imgSwitch : function(div,imgURL){
$(div + ' img').remove();
$(div).append('<img src="' + imgURL + '.png"/>');
},
}
}(window.main = window.main || {}, jQuery));