如何使该链接在 JQuery UI 自动完成中可单击?未捕获的类型错误

2024-02-14

我正在尝试使用 Jquery UI 自动完成插件,并且我想在建议框中呈现一些 html,并带有可点击的链接。 html 似乎呈现正常,但是当我单击链接时,它们不起作用,并且我进入了我的开发人员日志:

jquery-ui.min.js:239Uncaught TypeError: Cannot call method 'data' of null

Uncaught TypeError: Cannot call method 'data' of null
a.widget._create.menu.a.addClass.appendTo.mousedown.menu.selectedjquery-ui.min.js:239
a.Widget._triggerjquery-ui.min.js:23
a.widget.selectjquery-ui.min.js:252
a.widget._createjquery-ui.min.js:247
f.event.handlejquery.min.js:17
f.event.add.k.i.handle.k jquery.min.js:16

我在 HTML 和 Jquery 端使用以下代码,语法与 Rails 中的 Haml 相同。在第一个脚本标记中,我仅定义一个模板,然后使用 Underscore.js 进行渲染。

这个问题 https://stackoverflow.com/questions/2497076/add-a-link-to-a-jqueryui-autocomplete-item似乎引用了类似的问题,但我不明白答案"I think autocomplete uses an <a> for the element that provides the click event. In that case, you'll need to unset that click handler"

我将不胜感激任何指导!我已经被困在这个问题上两天了。谢谢!

= text_field_tag :search, nil, :class => "jq_watermark", :id => "product-search-input", :title => "Keywords, Tags, Items, SKU..."

%script(type="text/html" id="product-autocomplete-result-template")
  .cell.img
    %img(src='{{ main_image_thumb }}')
  .cell
    %h2= link_to '{{ label }}', CGI::unescape(product_path('{{ id }}'))
    .clear
    = link_to '{{ customer_count }} people have this', '#'
    %span Rating {{ rating }}
    %div{:id => "stars-wrapper-{{ id }}"}
      %select= options_for_select([1, 2, 3, 4, 5])
    %a(href='http://www.google.com') 
      Click Me
  .cell 
    = link_to "I have this", '#', :class => "button"
    = link_to "I want this", '#', :class => "button"

:javascript
  $(document).ready(function(){

    $.ui.autocomplete.prototype._renderItem = function( ul, item ) {
      var template = $('#product-autocomplete-result-template').html();
      var parsed_template = _.template(template, item);
      var target_option = 'value="' + item.rating + '"';    // do simple string replace to select option, as I can't get Jquery
      var selected_option = target_option + ' selected="selected"';
      var autocomplete_html = parsed_template.replace(target_option, selected_option);
      var returnVal = $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append('<a>' + autocomplete_html+'</a>')
        .appendTo( ul );
      $("#stars-wrapper-"+item.id).stars({ inputType: "select", disabled: true });
      return returnVal;
    };

    $('#product-search-input').autocomplete({
          delay: 50,
      source: function(request, response) {
        $.ajax({
          url: "#{search_products_path}",
          dataType: 'json',
          data: { term: request.term },
          success: function(data) {
            if (data.length < 1) {
              console.log("Juuusstt right");
              // show submit button
            } else {
              console.log("Too long");
              // hide submit button
            }
            response(data);
          }
        });
      },
      select: function( event, ui ) {
        console.log( ui.item ?
          "Selected: " + ui.item.label :
          "Nothing selected, input was " + this.value);
      }
   })
  });

我猜你已经找到了解决方案,但迟到总比不找到好。

我知道这不是最佳解决方案,但它确实有效。

$(".yourLink").live('click', function () {
    var yourLinkHref= $(this).attr('href');
    window.location = yourLinkHref;

});

希望能帮助到你 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使该链接在 JQuery UI 自动完成中可单击?未捕获的类型错误 的相关文章

  • 如何在模态窗口中显示pdf? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个模式窗口 其中包含锚文本 当我单击此链接时 它必须调用其他位置的 pdf 并将其显示在弹出窗口中 我怎样才能做到这一点 请帮忙
  • jQuery/JavaScript“this”指针混淆

    当函数时 this 的行为bar被称为让我困惑 请参阅下面的代码 当从单击处理程序调用 bar 时 有什么方法可以将 this 安排为普通的旧 js 对象实例 而不是 html 元素 a class with a method functi
  • IE 中的 jQuery 鼠标闪烁

    当我在 IE 中执行 fadeIn fadeOut slideUp slideDown toggle 等 jQuery 函数时 鼠标总是闪烁 沙漏在光标旁边的视图中快速闪烁 我尝试了不同的方法来在动画进行时完全隐藏鼠标 但没有效果 而且在大
  • 禁用 Chrome 66 的自动完成功能

    在 chrome 66 中 我找不到像以前那样禁用文本输入自动完成功能的方法 我试过autocomplete off and autocomplete new password 我认为它在 Chrome 63 之前一直有效 但现在不再有效了
  • 如何比较 JavaScript 表格中的单元格并测试是否相等? indexOf 是如何工作的?

    我在 HTML 代码中创建了一个表格 它有 9 列和 13 行 它被 JavaScript 循环完全填满 该循环用几个数组中的人名填充它 但是 我想添加一个验证步骤 确保一行中没有两个单元格具有相同的值 并且每个单元格的值不会在其正下方的单
  • 有没有办法同步ajax调用

    这可能是一个微不足道的问题 但我想知道是否有办法以某种方式知道最后一个 ajax 调用何时完成 假设我有 3 个异步 ajax 调用 ajax type GET datatype json url
  • jQuery 绑定效率

    我在数千个元素和输入上使用多个 jQuery 绑定时遇到加载速度问题 是否有更有效的方法来执行此操作 该网站能够通过ajax调用在产品列表之间切换 页面无法刷新 有些列表有 10 个项目 有些有 100 个 有些超过 2000 个 当我开始
  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • 如何居中对齐数据表标题

    我是数据表新手 当我制作表格标题时 它总是左对齐 如何将标题设置为居中对齐 我已阅读 datatables net manual styling classes 和 datatables net reference option colum
  • 有没有一种方法可以在没有输入的情况下发送表单值

    假设我有以下表格
  • jquery 聚焦/聚焦

    我想要的是将 active 类添加到输入焦点上的输入 当焦点关闭时 删除该类 Thank s 一旦你包含了 jquery 库 它就非常标准了 input focus function this addClass active input b
  • Firefox Addon 中的 JQuery 导致多个警告

    我在 Firefox 插件中使用 jquery 但我不断收到大量警告消息 如下所示 anonymous function does not always return a value System JS WARNING resource g
  • JQuery 菜单图标 RTL

    我正在尝试在阿拉伯语 RTL 页面中使用 jQuery 菜单 我可以将其设为 RTL 但图标应该是ui icon carat 1 w not ui icon carat 1 e 我创建jsfiddle在这里 http jsfiddle ne
  • 如何知道 .keyup() 是否是字符键(jQuery)

    如何知道 keyup 是否是字符键 jQuery input keyup function if key is a character such as a b A b c 5 3 2 etc not enter key or shift o
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • javascript - 如何获取对象名称或关联数组索引名称?

    我有一个像这样的 JSON 对象 var list name1 element1 value1 name2 element1 value2 如何提取所有 nameX 字符串值 例如 假设我想将它们连接在一个字符串中输出 例如 name1 n
  • 触发 jQuery UI 滑块事件

    如何触发更改事件jQuery UI 滑块 http docs jquery com UI Slider 我以为会是 slider trigger slidechange 但这没有任何作用 完整的示例脚本如下
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • 将网站加载到 DIV 中

    当我在文本框中写入 URL 然后单击提交按钮时 如何实际从网站检索数据 我希望将数据放入我拥有的 div 中 这可能吗 我已经尝试过这个 但它不起作用

随机推荐