正如它所说的那样。我正在尝试使用jquery进行一些简单的下拉过滤,并且我的函数不会在页面加载时执行。这是我检查的内容:
这是疯狂的部分:一次刷新后一切都很完美。 Console.log返回并报告监听器已附加到选择元素,一切都是玫瑰。
任何想法为什么?
编辑这里是整个js(可能有更好的方法,也可以接受建议):
//unrelated JS
$(document).ready(function(){
$("#user_state_code option").unwrap();
$state_copy = $("#user_state_code").children().clone(true);
$("#user_country_code").change(function(){
console.log("state filter called");
filterStates($("#user_country_code").val());
});
$("#user_country_code").change();
});
function filterStates(countryCode){
$("#user_state_code").html(
$state_copy.get().filter(function(d){
var currCountry = String(d.value);
return currCountry.slice(0,2) == countryCode;
})
);
}
后记
以下是需要修复的内容(感谢@Rain让我走上正轨,并促使我找到了这个惊人的资源:Rails 4 turbo-link prevents jQuery scripts from working
var ready = function() {
$("#user_state_code option").unwrap();
$state_copy = $("#user_state_code").children().clone(true);
$("#user_country_code").change(function(){
console.log("state filter called");
filterStates($("#user_country_code").val());
});
filterStates($("#user_country_code").val());
};
function filterStates(countryCode){
$("#user_state_code").html(
$state_copy.get().filter(function(d){
var currCountry = String(d.value);
return currCountry.slice(0,2) == countryCode;
})
);
}
$(document).ready(ready);
$(document).on('page:load', ready);