Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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
Javascript 将HTML代码段加载到select标记时结果不一致_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 将HTML代码段加载到select标记时结果不一致

Javascript 将HTML代码段加载到select标记时结果不一致,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在使用Ajax加载select的内容: <select id = "idResultEntryMeet" class="form-control input-md" size = 1> </select> ... $('#idResultEntryMeet').mousedown(function() { $.post("/cgi-bin/listOptions", function(data) { $('#idResultEntryMeet').

我正在使用Ajax加载
select
的内容:

<select id = "idResultEntryMeet" class="form-control input-md" size = 1>
</select>
...
$('#idResultEntryMeet').mousedown(function() { 
   $.post("/cgi-bin/listOptions", function(data) {
      $('#idResultEntryMeet').html(data);
   });
});

请尝试更改以下代码:

html

<select id="idResultEntryMeet" class="form-control input-md" size="1">      
</select>
编辑: 您需要将委托绑定包含在jquery中,以便执行此dinamic

$('#idResultEntryMeet').bind("click", function() {
    var data = '<option value="volvo">Volvo</option><option value="saab">Saab</option>';
    $('#idResultEntryMeet').html(data);
});
$('idResultEntryMeet').bind(“单击”,函数(){
var数据='VolvoSaab';
$('#idResultEntryMeet').html(数据);
});
并且需要格式化方法返回的格式一些类似于这样的方法(刚刚在chrome上测试过):


编辑:不适用于FF或IE。

数据
接收html字符串,例如
?它应该得到一个json,然后你对每个选项使用
$.append()
。@DontVoteMeDown-
数据可以是任何东西,没有人强迫你使用json。但是,如果OP发布了
数据实际上是什么,就有可能回答这个问题。这是一个包含选项的HTML片段。Firebug在POST完成后显示一个格式正确的select,其中包含选项?它甚至在IE9中被激活。现在的情况是浏览器似乎不喜欢在激活时必须重新绘制选择列表的事实。用mousedown、focus、mouseover、mouseenter加载它可能都会遇到与竞争条件相同的问题[aka将在用户打开选项之前返回响应]。您最好使用ping来检查新数据,并告诉用户有新的选项,他们可以单击该消息来加载新值。甚至不接近OP正在执行的操作。这只是一个示例,使用jquery“ready”加载select。meIt的工作必须是动态的:请参见上面的说明。但这与我的原始代码之间唯一相关的区别是,您绑定的是
单击
,而我使用的是
.mousedown
<代码>单击
无论如何都不起作用,因为您实际上无法选择任何选项(见上文)。如果我将您的代码更改为绑定
mousedown
,那么我在Opera中得到的结果完全相同(没有尝试其他方法),也就是说,第一个
mousedown
,它仍然不起作用,需要第二个
mousedown
。我发现了两个有用的链接1:2:
$(document).ready(function() { 
   $.post("/cgi-bin/listOptions", function(data) {
     $('#idResultEntryMeet').html(data);
   });
});

$('#idResultEntryMeet').change(function() { 
   var valueSelected = $(this).val();
   alert(valueSelected);
   //Do something
});
$('#idResultEntryMeet').bind("click", function() {
    var data = '<option value="volvo">Volvo</option><option value="saab">Saab</option>';
    $('#idResultEntryMeet').html(data);
});
$('#idResultEntryMeet').on('mousedown', function(e){
    if(!e.view) return;
    e.preventDefault();    
    var _self = this;
    $.post("/cgi-bin/listOptions", function (data) {
        $(_self).html(data);
         var mdwn = document.createEvent("MouseEvents");
        mdwn.initMouseEvent("mousedown", false, false, null, 0, 0, 0, 0, 0, true, false, false, true, 0, null);
        _self.dispatchEvent(mdwn);
    });
});