我从某人那里获得了这个代码,它应该正常工作,但source.attr('id')
未定义,我无法弄清楚原因。
var vendorTypeSelect = $("#select-vendor-type");
var vendorLocationSelect = $("#select-vendor-location");
createDropDown(vendorTypeSelect);
createDropDown(vendorLocationSelect);
function createDropDown(source){
console.log(source);
var customClass = source.attr('id'); <--- undefined????
console.log(customClass);
customClass = customClass.substr(customClass.indexOf("#") + 1)
源代码的控制台日志会提取对象,包括它的id,但是customClass的控制台日志会显示“未定义”。当我提出$("#select-vendor-location").attr('id');
我在这里上传了这个页面: http://pixeldesigns.ca/files/blush/
答案 0 :(得分:1)
事情是,何时
$(".dropdown dd ul li a").click(function() {
这些元素尚不存在。 (它们甚至存在,直到你在createDropDown函数中构建它们。)你需要将整个脚本包装成
jQuery(document).ready(function ($) { // or $(function () {
var vendorTypeSelect = $("#select-vendor-type");
var vendorLocationSelect = $("#select-vendor-location");
createDropDown(vendorTypeSelect);
createDropDown(vendorLocationSelect);
//...
});
因为在ready事件内部,在解析了所有HTML之后触发,所以这些元素现在确实存在。你甚至可以在createDropDown
之外(最好在$(document).ready
之外)定义你的{{1}}函数,但你必须在里面调用它,因为它假设元素已经存在。