Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery使用Append()或html()或text()移动SelectBox_Jquery_Html_Text_Append_Drop Down Menu - Fatal编程技术网

Jquery使用Append()或html()或text()移动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

我在一个隐藏的div下有一个selectbox,我做了一个函数,当我在某个地方单击时,选择框会显示正确的选项,但渲染不好,控件不能正常工作,代码如下:

$(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();
    });
});