Jquery使用Append()或html()或text()移动SelectBox
我在一个隐藏的div下有一个selectbox,我做了一个函数,当我在某个地方单击时,选择框会显示正确的选项,但渲染不好,控件不能正常工作,代码如下:Jquery使用Append()或html()或text()移动SelectBox,jquery,html,text,append,drop-down-menu,Jquery,Html,Text,Append,Drop Down Menu,我在一个隐藏的div下有一个selectbox,我做了一个函数,当我在某个地方单击时,选择框会显示正确的选项,但渲染不好,控件不能正常工作,代码如下: $(function () { $('.NewDiv').click(function () { $(this).append($('#MySelectBox')); $('#MySelectBox').val($(this).attr('value')); }); }); <select
$(function () {
$('.NewDiv').click(function () {
$(this).append($('#MySelectBox'));
$('#MySelectBox').val($(this).attr('value'));
});
});
<select id="MySelectBox>
<option...
</select>
$(函数(){
$('.NewDiv')。单击(函数(){
$(this.append($('#MySelectBox'));
$('#MySelectBox').val($(this.attr('value'));
});
});
用下面的句子换句话
$(this).append($('#MySelectBox').html());
我看到的一个问题是,当前代码将select
放入div
,因此select
上的任何单击事件都会导致操作重复
坏例子:
也许这就是您要查找的内容(单击在div
之后移动选择,添加新的选项
):
或者单击以显示、追加新的选项
:您看到此问题的原因是您将事件绑定到div,该div现在包含选择框。因此,当您选择一个选项时,它会将该选项更改为“0”,因为它不读取任何值
修复您的问题。隐藏div,然后单击触发器后显示()可能更简单。相关代码在中
还请注意,使用$(this.attr('value')
失败(在本例中,它是对newDiv
div的引用,该div没有名为value
)的属性)。对不起,我想我误解了这个问题,现在修复了代码:
$('#newDiv').click(function () {
$(this).append($('#MySelectBox'));
$('#MySelectBox').val($(this).attr('value'));
$('#MySelectBox').bind("click", function(e) {
e.stopPropagation();
});
});
小提琴:
你能给出确切的代码和它如何不工作的例子吗?你可以在这里测试它(尝试在移动它后选择一个选项)。你可以在第一个例子中看到问题,如果你在移动组合框之前单击它工作正常,但如果你移动组合框,然后单击它,它会改变你的行为。尝试点击“战斗机”后,移动组合框这里这是好的,如果OP想添加它几次。我怀疑他只是想让它出现一次…@Korvin Szanto抱歉我误解了这个问题。。您的解决方案是正确的+1
$('#newDiv').click(function () {
$(this).append($('#MySelectBox'));
$('#MySelectBox').val($(this).attr('value'));
$('#MySelectBox').bind("click", function(e) {
e.stopPropagation();
});
});