我在这里要做的是创建一个功能,为自定义选择元素执行所有功能。所以我创建了一个函数,它接受函数本身定义的三个参数(更多细节见下面的代码)。我正在尝试完成以下操作:我希望参数是各种元素的ID(例如包装器div),我希望在函数中删除这些参数。我的代码如下。非常感谢
function createList(ParentDivID,SelectMenuID,ListMenuID) {
$('#' + ParentDivID + "'");
$('#' + SelectMenuID + "'");
$('#' + ListMenuID + "'");
var options = $("#" + SelectMenuID +'"' ).find("option");
$(options).each(function(){
$(ul).append('<li>' +
$(this).text() + '<span class="value">' +
$(this).val() + '</span></li>');
});
var ul = '<ul id="' + ListMenuID + "></ul>";
$('#' + ParentDivID + "'").append(ul).end().children('#' + ListMenuID + "'").hide().click(function(){$(ul).slideToggle();});
$("#" + SelectMenuID + '"').hide();
}
createList(fancySelectLarge,selectWalkerType,walkerTypeLi);
答案 0 :(得分:7)
猜测一下,可能是因为您的ID不以引号字符结尾(HTML 4中的ID不允许),但是您将它们附加到您要搜索的字符串中jQuery的。
答案 1 :(得分:5)
你只需要做这样的选择器
$('#' + ParentDivID);
此外,你需要停止交换's和s,因为它会导致你错过一些收尾报价
function createList(ParentDivID,SelectMenuID,ListMenuID) {
var options = $('#' + SelectMenuID).find('option');
$(options).each(function(){
$(ul).append('<li>' +
$(this).text() + '<span class="value">' +
$(this).val() + '</span></li>');
});
var ul = '<ul id="' + ListMenuID + '"></ul>';
$('#' + ParentDivID).append(ul).end().children('#' + ListMenuID).hide().click(function(){$(ul).slideToggle();});
$('#' + SelectMenuID).hide();
}
createList(fancySelectLarge,selectWalkerType,walkerTypeLi); `
答案 2 :(得分:3)
你搞乱了所有的字符串连接,如:
$('#' + ParentDivID + "'");
应为$('#' + ParentDivID);
答案 3 :(得分:1)
当您调用该函数时,您的代码中其他地方已经分配了三个参数吗?如果没有,并且实际上是字符串id
属性,则需要将它们用引号括起来。
createList("fancySelectLarge", "selectWalkerType", "walkerTypeLi");
注意:请参阅$('#' + ParentDivID + "'");
答案 4 :(得分:1)
这通常有点乱,但我试图尽可能多地修复。
function createList(ParentDivID,SelectMenuID,ListMenuID) {
var options = $("#" + SelectMenuID).find("option");
var ul = $('<ul>', {id: ListMenuID});
$(options).each(function(){
ul.append('<li>' +
$(this).text() + '<span class="value">' +
$(this).val() + '</span></li>');
});
$('#' + ParentDivID)
.append(ul)
.end()
.children('#' + ListMenuID)
.hide()
.click(function() { ul.slideToggle(); });
$("#" + SelectMenuID).hide();
}
答案 5 :(得分:0)
$(ul)
未定义,因为var ul
稍后才被声明为几行。您还需要使用document.body.createElement('ul')
而不是将'<ul ...>'
放入字符串中。
此外,行$('#' + ParentDivID + "'");
没有做任何事情。
答案 6 :(得分:0)
在使用之前,您需要定义ul
。另外,将其定义为$('<ul.../>')
而不仅仅是'<ul.../>'
,以便您可以从该定义创建jQuery元素。
答案 7 :(得分:0)
你也想尝试创建像这样的dom元素
$('<span class="value">')
而不是字符串值'<span class="value">'
。