【问题标题】:Conflict with the jQuery script not executing on live site与未在实时站点上执行的 jQuery 脚本冲突
【发布时间】:2012-05-13 01:21:39
【问题描述】:

问题可能是因为 .on() 或其他脚本冲突。我的想法为零。

工作:这是 jsFiddles 上的脚本http://jsfiddle.net/ZtpEU/70/
不工作:这是实时代码:http://designobvio.us/test/middle.php

这两个是相同的代码;但是,在实时站点上,页面底部的 jquery 脚本不会执行。有谁知道冲突是在哪里制造的?因为我在创建脚本后从 fiddles 逐字复制了脚本。

HTML

<ul id="videos">
    <li><a href="#">shit swag people say</a></li>
    <li><a href="#">imdabest</a></li>
    <li><a href="#">jersey shore audition</a></li>
    <li><a href="#">rifle burs</a></li>
    <li><a href="#">mvc3: best combos dat ass</a></li>
    <li><a href="#">snacks</a></li>
</ul>​

CSS

ul#videos > li > a
{
    opacity: .5;
    color: #222;
    text-decoration: none;
}

ul#videos:hover > li > a
{
    opacity: .3;
    text-shadow: 0px 0px 6px #bbb;
    color: #bbb;
} 

ul#videos > li:hover > a
{
    opacity: 1;
    text-shadow: none;
    color: #222;
}

脚本

$("ul#videos li a").on('mouseenter', function() {
    $(this).animate({"padding-left": "50px"}, "normal");
});

$("ul#videos li a").on('mouseleave', function() {
    $(this).stop(true).animate({"padding-left": "0px"}, "slow");
});​

【问题讨论】:

  • 你能解释一下这个问题或者问一个问题吗?
  • 当你提醒$=> alert($)jQuery => alert(jQuery) 你会得到什么?
  • 我在实时页面中找不到您的 jFiddle 代码(使用 ctrl+f "onMouse")o.O 相反,我发现 script.js 中的 flexslider 看起来有些可疑..
  • 如果它没有执行,则意味着它 a) 在页面加载时没有被调用或 b) 它在其他地方被取消。
  • @MatthewHarwood 问题是你有SyntaxError: Unexpected token ILLEGAL。上面的代码可能会导致它。

标签: jquery


【解决方案1】:

您的实时版本的第 59 行似乎有一个不可打印的字符。它就在分号之后但在换行符之前。将您的 JS 复制/粘贴到 jsbeautifier 或其他东西中以对其进行清理。这为我解决了问题:

$(document).ready(function () {
    alert('hello');
    $("ul#videos li a").on('mouseenter', function () {
        $(this).animate({
            "padding-left": "50px"
        }, "normal");
    });
    $("ul#videos li a").on('mouseleave', function () {
        $(this).stop(true).animate({
            "padding-left": "0px"
        }, "slow");
    });
});

【讨论】:

  • 嘿,杰夫,我只是在我的 script.js 中编译它时才注意到这一点,我不知道它是什么,所以我把它放在页面的页脚中。我仍然认为它无法在 2 分钟内正确更新代码
  • 我看到它已更新,但您在 jQuery 上忽略了 http://,所以它现在是 404,当然会导致几个错误。顺便说一句,在我发布之前测试了上述内容,所以我大约 99% 确信这只是由于字符错误导致的语法错误。可能 jsfiddle 对其进行了消毒。我在 Mac 和 Win 7 虚拟机之间来回进行开发,每当我在两者之间复制/粘贴时都会遇到这个时髦的字符问题。
  • @Jeff 不错。我盯着这段代码看了 5 分钟,试图找出语法错误在哪里,然后放弃了。
  • @dbaseman 谢谢,我在控制台日志中看到了错误,但直到我将它带入 Notepad++ 并显示所有字符后才找到问题。
【解决方案2】:

倒数第二个后面有一个奇怪的空白字符

});

尝试删除该行并重新创建。

你应该使用像 jslint 这样的东西来捕捉这样的东西。

【讨论】:

    【解决方案3】:

    刚刚意识到您的.on() 函数应该这样重写:

    $("#videos li").on({
    
        mouseenter: function() {
             $(this).animate({"padding-left": "50px"}, "normal");
        },
    
        mouseleave: function() {
             $(this).stop(true).animate({"padding-left": "0px"}, "slow");
    
    }}, 'a');
    

    这样,您的标记只有一个处理程序,如果您以后想添加其他事件,只需将它们添加到列表中即可。

    这是jsfiddle

    【讨论】:

    • 出现编译错误。我很确定这是语义学。 “a”是什么意思?
    • 'a' 表示您希望这些事件(mouseenter/mouseleave)应用于 $("ul#videos li") 选择器内的所有 标签。为您需要的所有事件使用一个 .on() 比为同一个 html 使用各种 .on() 函数要好得多。
    • @frenchie,相对而言,您的回答是正确的——或者至少是更有效的方式来执行此操作,但问题根本不在于 jQuery 事件绑定,而是由于非法而导致的无效语法特点。您的回答没有解决这个问题,它只是消除了对 jQuery 的额外调用。我没有选择重组他的 JS,因为这只会分散问题的注意力。如果有的话,史蒂夫的回答更简洁,并且仍然回答了这个问题,我只是碰巧在他之前发布了几分钟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2014-03-02
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多