0

カスタム関数 getSearch() で $.getJSON を呼び出しています。呼び出し元からコンテナーに直接データを返したいと思います。(カスタム関数から .html() を使用するよりもはるかに簡単です。複製されたオブジェクト上にあります。) 私は 2 つの方法を試しています。2. 正しいコンテナーの var を関数に渡し、そこから正しい場所に配置できるようにします。私は最初の選択肢を好むと思いますが、今のところどちらも機能させることができません。

これらは私の関数です。1 つは検索ボックスで Enter キーを押すと起動し、もう 1 つは $.getJSON() で Twitter を呼び出すカスタム関数です。## でマークされた関連行。

    // RUN SEARCH: when pressing enter key in search box
    $('.search_box_in_menu').keypress(function(e) {
        var keycode = (e.keyCode ? e.keyCode : e.which);
        if(keycode == '13') {                   // remember to add all the enter/return buttons
                console.log(".search_box_in_menu - enter-key pressed.");
                console.log($(this).val());
            var where = $(this).parent().parent().parent();
            var there = $(this).next('.results').attr('class');
            console.log("where:");
            console.log($(this));
            console.log($(this).parent().parent().parent());
            console.log($(this).next('.results').attr('class'));
            console.log(where);
            console.log("there:");
            console.log(there);
    ##      $(this).closest('.results').getSearch($(this).val(), where);    //calling twitter
                console.log("$(this).val() at enter-press: " + $(this).val());

            $(this).closest('.dropdown').trigger('click'); //close dropdown box
            $('.search_box_in_menu').tooltip('hide'); //hiding tooltip on searchbox when pressing enter
        }
    });



}); //$(document).ready 



// function for getting tweets from Twitter
$.fn.getSearch = function(searchword, where) { 
    var qterm = searchword;
    var preUrl = "http://search.twitter.com/search.json?q=";
    var postUrl = "&rpp=50&include_entities=true&show_user=true&callback=?";
    var twUrl =  preUrl + qterm + postUrl; 
    console.log(preUrl + ", " + qterm + ", " + postUrl);

    if (qterm !== '') {
        $.getJSON(twUrl, 
            function(data) { 
                console.log('sending to search_back.php.');
                console.log("data before send: " + data);
                $.post("search_back.php", {json_data: data}, function(data) { 
                        console.log("returned at: ");
                        console.log($(this));
                        console.log(where);
            ##      $(".results").html(data); // # this is the current way, but will apply to all cloned objects.
            ##      //return data; // # this is the preferred way
                });

            });
    };
};

これをハンサムな方法で解決する方法を知っている人はいますか?.results にも ID を割り当てたくありません。これを解決するにはもっとエレガントな方法が必要だと思われるからです。

これは FireBug コンソール ログです。私が求めている .results は [div id="menu200"] の次です。

document.ready -
[div#menu200.dropdown]
.dropdown - click.
.search_box_in_menu - click.
.search_box_in_menu - value removed.
.search_box_in_menu - enter-key pressed.
twitter
where:
[input.search_box_in_menu Search...]
[div#menu200.dropdown]
undefined
[div#menu200.dropdown]
there:
undefined
http://search.twitter.com/search.json?q=, twitter, &rpp=50&include_entities=true&show_user=true&callback=?
$(this).val() at enter-press: twitter
[div#menu200.dropdown]
.search_box_in_menu - dirty searchbox.
.dropdown - click.
sending to search_back.php.
data before send: [object Object]
POST http://wikindoit.org/twitterstars/search_back.php
200 OK
927ms   
returned at:
[Object { url="search_back.php", isLocal=false, global=true, more...}]
[div#menu200.dropdown]
4

1 に答える 1

0

getSearch に 3 番目のパラメーターを追加します。

$.fn.getSearch = function(searchword, where, callback) {

getScript の成功コールバックの最後に、コールバックを呼び出して、必要なものを渡します。

//$(".results").html(data);
callback(data);
于 2012-06-18T13:47:31.920 に答える