【问题标题】:Executing javascript in wordpress在wordpress中执行javascript
【发布时间】:2013-05-26 10:54:26
【问题描述】:

我正在尝试在我的 wordpress 网站上执行一个 JavaScript 函数。这个想法是当有人将鼠标悬停在链接(nav .home a)上时,使图像出现在视口 div 中。我不能让它为我的生活工作。

这是 HTML: 我把它放在样式表和元标记之间的标题中

<script type="text/javascript" src="/scriptfile.js"></script>

然后我在视口 div 中运行脚本:

<div class="viewport">
<script type="text/javascript">
<!--
preview();
//--></script>
</div>

这是文件(scriptfile.js):

function preview()
{
  var hoverhome = 'url("images/Screen2.png") no-repeat';
  var empty = '';

  $(document).ready(function()
  {

//home
$('nav .home a').mouseover(function(){
      $('.viewport').css('background-image', 'url(' + hoverhome + ')');
});
$('nav .home a').onmouseout(function(){
  $('.viewport').css('background-image', 'url(' + empty + ')');
}); 
  }
}

【问题讨论】:

  • 你的 $(document).ready(function(){...});应该在预览功能之外
  • 你不需要 JavaScript 来改变你的 div 的背景图片。为此,请使用纯 CSS。见:hoverw3schools.com/cssref/sel_hover.asp
  • 一开始我是这么想的,但我正在更改悬停时不同元素的 css。我会通过将两个元素放在同一个类中来构造它吗?

标签: javascript html css wordpress


【解决方案1】:

主要问题: 看起来好像您正在尝试将此“url(url(”images/Screen2.png“)no-repeat)”存储在元素的css中。尝试这样做:

$('.viewport').css('background-image', hoverhome);

小问题: 请注意,您不应该在 wordpress 的主题中使用相对路径! 使用这个 php 函数来获取主题根目录:

get_theme_root();

然后从那里导航到您的 javascript 文件。

这可能会解决你的问题,它发生在我身上好几次

【讨论】:

    【解决方案2】:

    我不确定你是否可以打电话

    $(document).ready(function() { }
    

    页面已经加载之后。试着混合一下你的代码:

    $(document).ready(function()
    {
            var hoverhome = 'url("images/Screen2.png") no-repeat';
            var empty = '';
    
            //home
            $('nav .home a').mouseover(function()
            {
               $('.viewport').css('background-image', 'url(' + hoverhome + ')');
            });
            $('nav .home a').onmouseout(function()
            {
                $('.viewport').css('background-image', 'url(' + empty + ')');
            }); 
    
    }
    

    只要页面加载时存在.nav,我认为您不需要将函数放在那里。您可以完全删除它。

    我认为问题在于 jQuery 在页面加载时设置了所有内容,因此在 AFTERWARDS 之后调用 .ready() 方法没有任何效果。

    【讨论】:

    • 所以我尝试了两个答案(以及两者的组合,但无济于事。我已将标题调用更改为: 以及 JS 的 2 个答案的组合,但鼠标悬停时仍然没有显示任何内容。
    • 我得到一个 ReferenceError: preview is not defined
    • 对,我认为你根本不需要 Preview() 函数,只要 .viewport 元素存在于 HTML 中。删除显示 preview(); 的行因为不再有一个名为预览的功能,只需尝试我上面所说的。让我知道你是怎么办的。如果还是不行,我就开个JSFiddle。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2018-11-23
    • 2011-02-11
    • 2015-06-06
    相关资源
    最近更新 更多