jquery冒泡未知错误

时间:2015-04-16 19:12:02

标签: javascript jquery

我有以下代码将文本复制到隐藏的输入中并将其提交给重绘部分页面。

function searchHelp() {
  // Copy value to hidden input
  jQuery('input.searchInput').bind('change paste keyup', function() {
    jQuery('.hide.searchBox').val(jQuery(this).val());
  });
  // Get the current page name
  var pageName = window.location.pathname;
  pageName = pageName.split("/").pop();

  if(pageName === 'blu_search') {
    jQuery(".searchBox input").keypress(function(event) {
      console.log("Inside keypress");
      if (event.which == 13) {
        event.preventDefault();
        jQuery(".hide.searchSubmit").click();
      }
    });
    jQuery(".searchSubmit").on("click", function() {
      jQuery(".hide.searchSubmit").click();
      console.log("hidden button clicked");
    });
  } else {
    jQuery(".searchBox input").keypress(function(event) {
      if(event.which === 13) {
        event.preventDefault();
        jQuery(".searchSubmit").click();
      }
    });
  }
}

在控制台中我得到了 enter image description here

导致错误的特定行是jQuery(".hide.searchSubmit").click();。当我对此行进行注释时,代码运行时没有任何错误。有谁知道为什么这个或如何解决这类错误?

编辑:这是扩展错误。我无法一气呵成。以下是整个输出的粘贴http://pastebin.com/hSYnRskB

enter image description here

2 个答案:

答案 0 :(得分:1)

您正在处理无限循环错误。

jQuery(".searchSubmit").on("click",function(){...}) //Click handler (part1)

只要单击具有类searchSubmit的元素

,此回调函数就会运行

在该函数内部(单击时运行的内容),您可以执行以下操作:

jQuery(".hide.searchSubmit").click(); //Click trigger (part2)

然后触发part1,然后触发part2等等

要解决此问题,您可以重新构建处理此功能的方式,针对不同状态使用完全不同的类,或者只需将.click()行更改为:

if(jQuery(this).hasClass("hide") === false)
{
    jQuery(".hide.searchSubmit").click();
}

(或者那种效果)

答案 1 :(得分:0)

如果您想模拟点击,只需使用trigger()

jQuery(".sel").trigger("click");

此外,这可能会导致错误

jQuery(".searchSubmit").on("click", function() {
      jQuery(".hide.searchSubmit").click();
      console.log("hidden button clicked");
    });