2

我有以下脚本。它在用户单击搜索按钮时起作用,但它只起作用一次。请指导我如何使其获得更多点击。谢谢,

 <form action="" method="get" id="searchform">
   <input name="q" type="text" id="search" size="32" maxlength="128" class="txt">
   <input type="button" id="hit" value="Search"  class="btn">
 </form>

<script type="text/javascript">
  var nexturl ="";
  var lastid ="";
  var param;
  $(document).ready(function () {
    $("#hit").on("click", function myFunction() {
      param = $('#search').val();
      alert("I am an alert box!");
      if (param != "") {
        $("#status").show();
        var u = 'https://graph.facebook.com/search/?callback=&limit=100&q='+param;
        getResults(u);
      }

      $("#more").click(function () { 
        $("#status").show();
        $("#more").hide();  
        pageTracker._trackPageview('/?q=/more');
        var u = nexturl;
        getResults(u);
      });
    });
  });
</script>
4

3 回答 3

1

我知道这已经被问过很多次了,但这里是:

$(document).on("click", "#hit", function() {
  ...
});

您需要让事件冒泡到文档中,以便对 DOM 的更改不会消除您的事件处理。

这是在jsFiddle中。让我知道你看到了什么。

于 2013-03-02T09:23:15.213 回答
1

如果您实际上并没有提交表单而只是运行 JavaScript,则应该将其作为表单上的 onsubmit 运行,而不是像这样:

<form id="searchform" onsubmit='return submitForm()'>
  <input name="q" type="text" id="search" size="32" maxlength="128" class="txt"  >
  <input type="button" id="hit" value="Search"  class="btn">
</form>

<script type="text/javascript">
  var nexturl ="";

  function submitForm(){
    var lastid ="";
    var param = $('#search').val();

    alert("I am an alert box!");
    if (param != "") {
      $("#status").show();
      var u = 'https://graph.facebook.com/search/?callback=&limit=100&q='+param;
      getResults(u);
    }

    //Prevents the form submitting
    return false;
  }

  $("#more").click(function () { 
    $("#status").show();
    $("#more").hide();  
    pageTracker._trackPageview('/?q=/more');
    var u = nexturl;
    getResults(u);
  });
</script>

更多按钮总是存在还是动态添加/删除?如果是这样,您可能需要执行类似的操作

$("body").on("click", "#more", function () { 
  $("#status").show();
  $("#more").hide();  
  pageTracker._trackPageview('/?q=/more');
  var u = nexturl;
  getResults(u);
});

反而。

于 2013-03-02T09:33:36.367 回答
1

它也适用于第二次搜索。第二次搜索的项目只是被附加到搜索结果列表中,也许这就是你看不到它们的原因。试试 $("#data").empty(); 在开始附加新搜索查询的结果之前。

于 2013-03-02T09:41:56.267 回答