JavaScript Multi-Select,向左移动,移动后选项点击不起作用

时间:2017-03-25 06:16:22

标签: javascript

我遇到了问题。我有两个列表,有多个选项。对于列表中任何选项的单击事件,选项中包含的文本将打印在标签上。问题是,当我执行移动(将元素移动到其他列表)时,click事件不再适用于列表中的新元素。

我已添加以下代码。感谢您的帮助。

    <script>
        function moveAll(from, to){
            $('#'+from+' option').remove().appendTo('#'+to);}

        function moveSelected(from, to) {
            $('#'+from+' option:selected').remove().appendTo('#'+to);}
    </script>

<b style="margin: 10px;">Our List</b>

<select id="to" name="to[]" style="width:100px;" size="8" multiple="multiple">
</select>

<a href="javascript:moveAll('from', 'to')" class="controls">&lt;&lt;</a>
<a href="javascript:moveSelected('from', 'to')" class="controls">&lt;</a>
<a href="javascript:moveSelected('to', 'from')" class="controls">&gt;</a>
<a href="javascript:moveAll('to', 'from')" href="#" class="controls">&gt;&gt;</a>

<b style="margin: 10px;">Other List</b>

<select id="from" name="from[]" class="fromList" size="8" multiple="multiple">
  <option value="1">Item1</option>
  <option value="3">Item 3</option>
  <option value="2">Item 2</option>
  <option value="x" disabled>Title</option>
</select>

<p id="Preview" class="Preview"></p>
<script type="text/javascript">
$(function(){
    $("option").on("click", function(){
        $('#QuestionPreview').html($(this).text());           
    });
});
</script>

1 个答案:

答案 0 :(得分:0)

您尚未在新创建的getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 元素上分配点击事件处理程序。如果要将事件处理程序分配给将来出现的元素,可以将事件处理程序分配给已存在的父项(http://api.jquery.com/on)。

在您的情况下,这应该有效:

option

由于缺乏更好的选择,我使用$('body').on('click', 'option', function() { $('#QuestionPreview').html($(this).text()); }); 。理想情况下,它应该是您的body#from元素的共同父元素。