5

我正在做一个项目,该项目要求我能够从页面中获取 html 并将其插入到主网页中。它完全可以在 Chrome 和 Firefox 中运行,但在 IE 9 中失败。这是我使用的代码的一部分。

   if (!element.data('cache')) {

       $('#contentHolder').html('<img src="ajax_preloader.gif" width="64" height="64" class="preloader" />');

      $.get(element.data('page'), function (msg) {
         $('#contentHolder').html(msg);

         /* After page was received, add it to the cache for the current hyperlink: */
            element.data('cache', msg);
            setTimeout("checkonbox()", 100);
        });
    }
    else {
         $('#contentHolder').html(element.data('cache'));
        setTimeout("checkonbox()", 100);
    }

注入的 HTML 是

<table style="width:400px; height: 388px; text-align: left;" align="left">
<tr>
<td><input id="Checkbox0" type="checkbox"  onclick="changebuttons();" checked="true">  
Exclusive.</input></td>
</tr>
</table>

加上更多的选项按钮。

一切看起来都很完美,但我无法单击复选框或选项按钮。

4

4 回答 4

0

代替

element  

$(element)  

它会起作用的。

于 2012-09-07T11:16:52.037 回答
0

我在您的问题中看不到完整的代码。但我假设您没有将代码放在初始化程序中:

    $(function () {
      // your jQuery code here.
    });

这将帮助浏览器初始化与其元素关联的事件。试试这个并检查是否发生任何变化。

如果javascript有任何错误,也尝试消除。尝试使用可用的浏览器进行调试。我遇到过的最好的 javascript 调试器是FireBug,它是一个 firefox 插件。

于 2012-05-24T04:33:58.170 回答
0

任何动态添加到 dom 的内容在加载到页面后都必须绑定动作。仅通过 AJAX 将代码放入其中不会使其运行。

尝试在您的函数中执行此操作:

$.get(element.data('page'), function (msg) {
         $('#contentHolder').html(msg);

         //this will bind your input field  via javascript
         $('input#Checkbox0').click(changebuttons);

         /* After page was received, add it to the cache for the current hyperlink: */
            element.data('cache', msg);
            setTimeout("checkonbox()", 100);
});
于 2012-05-27T08:42:41.453 回答
0

我从来没有见过这样写的输入标签。我还没有早上喝咖啡,但我相当肯定它应该是自动关闭的,在这种情况下,看到 IE 对你所拥有的东西大喊大叫,我一点也不感到惊讶。

我想这个想法是制作“独家”。标签可点击,在这种情况下,您需要在输入周围添加标签标签,如下所示:

<label for="Checkbox0"><input id="Checkbox0" type="checkbox"  onclick="changebuttons();" checked="true" />Exclusive.</label>

试一试。

于 2012-05-24T05:34:22.807 回答