javascript - 在 .find() 之后链接插件会出现意外的 jQuery 语法错误

标签 javascript jquery jquery-plugins syntax-error

我已经制作了一个插件来处理我在一个大网站上使用的输入字段的运行时搜索。

该插件在除此以外的所有情况http://jsfiddle.net/tonino/v8d2A/

$(document).ready(function () {
    var callback_methods = { /* methods here */ };
    var input_html = '<div class="search"><input name="search-field" value="Search..."></div>';
    $(document).on('click', 'div.add', function (event) {
        if (!$('li div.add + div').hasClass('search')) {
            var input = $(this).after(input_html).parent().find('input');
            input.focus();
            input.hunter({url:'<?php echo $this->request->base; ?>/searches', callback:callback_methods, var_name:'data[Search][term]'});
            // other code after
        }
    });
});​

如果我评论猎人插件,一切都会正常。

我确信它的结构必须有一些概念,这里是代码:jquery.hunter.1.3.js

为什么我的插件在这种情况下会出现此错误,是我写错了?

最佳答案

问题出在你的代码的这一部分:

var selector = this.selector;

var def_css = {backgroundPosition:'-16px center', paddingLeft:$(selector).css('padding-left')}
if (settings.loader) { setStyle(def_css); }
   var selector = this.selector;

及以后:

$(this.selector).blur(function () {

首先,当满足 if 条件时,您的代码将无法工作,因为您试图在 if block 内重新声明变量“selector”。只需将 var 语句留在那里即可:

if (settings.loader) { setStyle(def_css); }
  selector = this.selector;

但你的主要问题是“this.selector”包含“.parent() input”,我怀疑它是一个有效的 jQuery 选择器。

你为什么要这么做?为什么不直接使用 $(this) 将其保存到变量中并使用 this???

例如:

// first line in your plugin
$this = $(this) 


// later you could use the $this var
$this.blur(function () {

关于javascript - 在 .find() 之后链接插件会出现意外的 jQuery 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876055/

相关文章:

javascript - 用 % 宽度和高度控制图像的纵横比

javascript - jquery 验证插件 textarea

JQuery Fancy Box 文本溢出

javascript - 除非用户坚持小写,否则在用户键入时将每个单词的首字母大写

javascript - 尝试为图表制作动画

Javascript循环嵌套点击事件

javascript - 我的 ASP.NET 网站在 Chrome 的任务栏上显示纸质图标

javascript - jQuery 跨站抓取

import - 我如何在 Next.js 中使用我的 jquery 插件?

javascript - 将项目添加到 ui-select Angular