【问题标题】:jquery script not functioning correctly in IE8 - perfect in FFjquery 脚本在 IE8 中无法正常运行 - 在 FF 中完美
【发布时间】:2011-02-23 01:59:51
【问题描述】:

谁能帮我处理这个 jquery 脚本 - 我不是程序员,我已经收到了这个脚本,但作者无能为力....

我有一个脚本可以在 FF 中完美运行,但在 IE8 中发生了一些奇怪的事情:

  • 应该是 case 1 将选择 case 2(如果来自 case 3,则选择 3)
  • 什么情况下 2 会选择情况 3
  • 什么应该是因为 3 将选择案例 2(如果来自案例 1,则选择 3)

这有意义吗?

反正这是脚本-

<script type="text/javascript" src="js/jquery/jquery-core.js"></script>
<script type="text/javascript">

function hideall() {
    $('#li_9').hide();
    $('#li_56').hide();
}

$(document).ready(function() {
    hideall();

    $("#form_40 input[@name='element_59']").change(function() {
        hideall();

        switch($(this).val()) {
            case '1' :
                $('#li_9').show();
                break;

            case '2':
                $('#li_9').show();
                $('#li_56').show();
            break;

            case '3' :
                $('#li_56').show();
            break;
        }
    });
});

【问题讨论】:

  • 我没有发现任何问题。您能否发布指向显示该问题的页面/站点的链接?

标签: jquery internet-explorer-8 hide switch-statement


【解决方案1】:

唯一让我大吃一惊的是

input[@name='element_59']

我查看了 jQuery API,并没有看到任何对“@”在名称前的作用的引用。您可能需要验证您是否正确使用它。

除此之外,您还可以通过链接显示和隐藏函数来对选择器进行一些改进,如下所示:

$('#li_9, #li_56').hide();

$('#li_9, #li_56').show();

另一件事是您上面的示例没有关闭“更改”方法或“就绪”事件。我假设这就是它在这里发布的方式。

【讨论】:

  • @ 在 1.3 之前的 jQuery 版本中使用。 OP 必须使用旧版本,否则 .change() 事件根本不会触发。
  • 当然是。我是说使用@,如果OP 使用较新版本的jQuery,.change() 将完全失败。处理程序正在触发,所以@ 不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多