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

フォームを実際に送信しておらず、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>

moreボタンは常に存在しますか、それとも動的に追加/削除されるものですか?もしそうなら、あなたはおそらく次のようなことをする必要があるでしょう

$("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

2 回目の検索でも機能します。2 番目の検索の項目は、検索結果のリストに追加されるだけです。おそらく、それが表示されない理由です。$("#data").empty(); を試してください。新しい検索クエリの結果を追加する前に。

于 2013-03-02T09:41:56.267 に答える
1

これは以前に何度も尋ねられたことを知っていますが、ここにあります:

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

DOM への変更によってイベント処理が消去されないように、イベントをドキュメントにバブルアップさせる必要があります。

ここではjsFiddleにあります。あなたが見ているものを教えてください。

于 2013-03-02T09:23:15.213 に答える