简体   繁体   English

jQuery在Internet Explorer 8中不起作用

[英]JQuery not working in Internet Explorer 8

I have html as below: 我有如下的HTML:

<navi>
    <ul class="fnt_menu_secondo_livello" id="menu_secondo_livello">
        <li><a href="Retailers.aspx" title="Account Set up">Account Set Up</a></li>
        <li><a href="RetailerLogin.aspx" title="Retailer Login">Retailers Login</a></li>
        <li><a href="ManufacturerLogin.aspx" title="Manufacture Login">Manufacturers Login</a></li>
        <li><a href="PriceListRequest.aspx" title="Price List Request">Price List Request</a></li>
        <li><a href="Education.aspx" title="Price List Request">Education</a></li>
    </ul>
</navi>

And I'm using this code to addClass to the current menu: 我正在使用此代码将Class添加到当前菜单:

$(document).ready(function() {
    $('navi a[href^="' + location.pathname.split("/")[1] + '"]').closest('li').addClass('select');
});

This is working fine in other browsers except IE8. 在IE8以外的其他浏览器中,此功能都可以正常工作。

Let me know what is wrong with this.? 让我知道这有什么问题吗?

To make HTML5 elements work with non html5 compliant browsers you need to include htmlshiv http://code.google.com/p/html5shiv/ 要使HTML5元素与不兼容html5的浏览器一起使用,您需要添加htmlshiv http://code.google.com/p/html5shiv/

also as indicated in other answers it should be nav instead of navi http://www.w3.org/WAI/GL/wiki/Using_HTML5_nav_element 也如其他答案所示,它应该是nav而不是navi http://www.w3.org/WAI/GL/wiki/Using_HTML5_nav_element

add the following in the script section 在脚本部分添加以下内容

<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

and modify the selector like 并像这样修改选择器

$(document).ready(function() {
    $('nav a[href^="' + location.pathname.split("/")[1] + '"]').closest('li').addClass('select');
});

here is a blog post(courtesy @Ravi) by John Resig you may find useful http://ejohn.org/blog/html5-shiv/ 这是John Resig的博客文章(礼貌@Ravi),您可能会发现有用的http://ejohn.org/blog/html5-shiv/

I had a similar issue before, it turned out it was the split method in the javascript. 之前我也遇到过类似的问题,事实证明这是javascript中的split方法。 IE doesn't support split in ie8 and lower. IE不支持在ie8及更低版本中进行拆分。 If you add this to your js and it should work... 如果您将此添加到您的js中,它应该可以工作...

    /* Cross-Browser Split 1.0.1
(c) Steven Levithan <stevenlevithan.com>; MIT License
An ECMA-compliant, uniform cross-browser split method */

var cbSplit;

// avoid running twice, which would break `cbSplit._nativeSplit`'s reference to the native `split`
if (!cbSplit) {

cbSplit = function (str, separator, limit) {
    // if `separator` is not a regex, use the native `split`
    if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
        return cbSplit._nativeSplit.call(str, separator, limit);
    }

    var output = [],
        lastLastIndex = 0,
        flags = (separator.ignoreCase ? "i" : "") +
                (separator.multiline  ? "m" : "") +
                (separator.sticky     ? "y" : ""),
        separator = RegExp(separator.source, flags + "g"), // make `global` and avoid `lastIndex` issues by working with a copy
        separator2, match, lastIndex, lastLength;

    str = str + ""; // type conversion
    if (!cbSplit._compliantExecNpcg) {
        separator2 = RegExp("^" + separator.source + "$(?!\\s)", flags); // doesn't need /g or /y, but they don't hurt
    }

/* behavior for `limit`: if it's...
- `undefined`: no limit.
- `NaN` or zero: return an empty array.
- a positive number: use `Math.floor(limit)`.
- a negative number: no limit.
- other: type-convert, then use the above rules. */
if (limit === undefined || +limit < 0) {
    limit = Infinity;
} else {
    limit = Math.floor(+limit);
    if (!limit) {
        return [];
    }
}

while (match = separator.exec(str)) {
    lastIndex = match.index + match[0].length; // `separator.lastIndex` is not reliable cross-browser

    if (lastIndex > lastLastIndex) {
        output.push(str.slice(lastLastIndex, match.index));

        // fix browsers whose `exec` methods don't consistently return `undefined` for nonparticipating capturing groups
        if (!cbSplit._compliantExecNpcg && match.length > 1) {
            match[0].replace(separator2, function () {
                for (var i = 1; i < arguments.length - 2; i++) {
                    if (arguments[i] === undefined) {
                        match[i] = undefined;
                    }
                }
            });
        }

        if (match.length > 1 && match.index < str.length) {
            Array.prototype.push.apply(output, match.slice(1));
        }

        lastLength = match[0].length;
        lastLastIndex = lastIndex;

        if (output.length >= limit) {
            break;
        }
    }

    if (separator.lastIndex === match.index) {
        separator.lastIndex++; // avoid an infinite loop
    }
}

if (lastLastIndex === str.length) {
    if (lastLength || !separator.test("")) {
        output.push("");
    }
} else {
    output.push(str.slice(lastLastIndex));
}

return output.length > limit ? output.slice(0, limit) : output;
};

cbSplit._compliantExecNpcg = /()??/.exec("")[1] === undefined; // NPCG: nonparticipating capturing group
cbSplit._nativeSplit = String.prototype.split;

} // end `if (!cbSplit)`

// for convenience...
String.prototype.split = function (separator, limit) {
    return cbSplit(this, separator, limit);
};

I think you use nav in place of navi like: 我认为您可以使用nav代替navi

<nav>
    <ul class="fnt_menu_secondo_livello" id="menu_secondo_livello">
        <li><a href="Retailers.aspx" title="Account Set up">Account Set Up</a></li>
        <li><a href="RetailerLogin.aspx" title="Retailer Login">Retailers Login</a></li>
        <li><a href="ManufacturerLogin.aspx" title="Manufacture Login">Manufacturers Login</a></li>
        <li><a href="PriceListRequest.aspx" title="Price List Request">Price List Request</a></li>
        <li><a href="Education.aspx" title="Price List Request">Education</a></li>
    </ul>
</nav>

Note: Internet Explorer 8 and earlier versions, do not support the tag. 注意: Internet Explorer 8和更早版本不支持该标记。

Refer http://www.w3.org/WAI/GL/wiki/Using_HTML5_nav_element 请参阅http://www.w3.org/WAI/GL/wiki/Using_HTML5_nav_element

i don't think there is a valid html tag called <navi> ... it sould be <nav> if i am not wrong 我不认为有一个有效的html标签称为<navi> ...如果我没记错的话,它应该是<nav>

and your selector, 还有你的选择器

 $('nav a[href^="' + location.pathname.split("/")[1] + '"]').closest('li').addClass('select');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM