【发布时间】:2013-01-22 16:20:57
【问题描述】:
此代码/标记与 php 脚本一起呈现一个多选输入,其中填充了选项设置为 文件通过 php 脚本。目标是当用户单击一个选项时,读取文本文件并将其输出到 div $("#txtbx")。 这在 Mozilla firefox 中按计划工作,但是 ie9 什么都不做,没有错误没有输出。 正如您从 cmets 中看到的那样,我已经找到了问题的代码。这不是我最初想到的 .each() 问题,也不是选择器问题(我直接按类引用了它:见评论)。也不是 $(this) 我也测试过......它似乎是附加到 $(this) 的事件或事件本身。输出的去向无关紧要,因为它不会超过 $(this).click(f)。知道这里发生了什么吗?
<div id="txtbx">
</div>
<select id="REFselect" size="1">
<option class="REFoptions" value="./TXT/css.txt">css.txt</option>
<option class="REFoptions" value="./TXT/dns.txt">dns.txt</option>
</select>
$("#REFselect option").each(function () {
$(this).click(function(){
alert("test")
/*
$("#txtbx").load($(this).val(),function(responseTxt,statusTxt,xhr){
$(this).html("<pre>"+responseTxt+"</pre>");
if(statusTxt=="success")
alert("External content loaded successfully!");
if(statusTxt=="error")
alert("Error: "+xhr.status+": "+xhr.statusText);
});
*/
});
});
这是工作代码,我是该网站的新手,所以我要感谢大家的回答,他们非常好。我不知道如何授予适当的信用,我正在研究。 我也很想知道为什么旧代码在 FF 而不是 IE 中工作。
$("#REFselect").change(function(){
var select = $(this).val();
$("#txtbx").load(select,function(responseTxt,statusTxt,xhr){
$(this).html("<pre>"+responseTxt+"</pre>");
if(statusTxt=="success")
alert("External content loaded successfully!");
if(statusTxt=="error")
alert("Error: "+xhr.status+": "+xhr.statusText);
});
});
【问题讨论】:
-
我相信你在
load回调中的this将不再是被点击的元素,你需要将它存储在一个变量中,并在load回调中使用该变量。跨度>
标签: javascript jquery internet-explorer-9