1

这可能是基本的,但是这个问题需要我几个小时才能弄清楚,而且我还没有找到任何解决方案。我正在使用 Wordpress 3.5,并且在此文件夹中有一个名为 general.js 的外部 javascript 文件:wp-content/themes/[folder_name]/js。在 general.js 中,我编写了一个名为 hideError 的函数,基本上是为了隐藏从我的文本框中弹出的错误标签。

(function($) {
function hideErrorLabel(i) {
    //codes for handling label
}
})(jQuery);

我这样称呼它:

<span class="component-wrapper" onmouseover="hideErrorLabel(0)">
    <input type="text" name="txtName" size="10" />
    <label for="txtName" class="error">All field must be filled.</label>
</span>

我传递了一个参数,因为这些文本框是数组。奇怪的是,它给了我javascript错误“未定义hideErrorLabel”。什么地方出了错?请帮忙。

4

3 回答 3

2
(function($) {
 /* code */
})(jQuery);

将确保/* code */在解析 DOM 后执行您提供的内容。hideErrorLabel但是,当解析器尝试插入onmouseover属性时,这将阻止定义。

为了解决这个问题,您还应该在以下部分中使用修改您的事件处理程序/* code */

(function($) {
function hideErrorLabel(i) {
    //codes for handling label
}

$('.component-wrapper').on('mouseover',hideErrorlabel);
})(jQuery);
于 2013-01-06T14:52:50.080 回答
1

只需删除该 javascript 代码的第一行和最后一行。你隐藏了你的功能!在任何脚本标签中公开声明它。

<script type="text/javascript>
function hideErrorLabel(i) {
  //codes for handling label
}
</script>
于 2013-01-06T15:00:22.180 回答
1

发生这种情况有几个原因,最安全但不是最简单的答案是将事件绑定移动到代码中。您也可以使用委托,如果您只是想确定函数的范围,则不需要索引。如果您确实需要索引,您可以隐式获取位置或使用数据集值通过 PHP 显式提供一个。

听起来你只需要这样的东西:

(function($) {
  $(function() {
    $(document).on('mouseover', '.component-wrapper', function(event) {
      var $wrapper = $(event.currentTarget);
      $wrapper.find('.error').hide();
    });
  });
})(jQuery);

但是您可以调整它以调用外部函数或根据需要提供额外的逻辑。

于 2013-01-06T15:10:03.593 回答