0

良い一日、

私はかなり長い間これを正しく行うのに苦労してきました.私が何かひどくばかげたことをしているのか、それともそのようなことをしているのかを知りたいだけです.

このコードは、php から json オブジェクトを取得し、情報を正しく追加します。しかし、追加されたアンカータグで関数を呼び出すことができません。最初に、id を介してクリック機能を使用して jQuery を試しましたが、うまくいきませんでした。現在、onclick を介してイベントをトリガーしようとしています。

    $(document).ready(function(){
    $("#searchBtn2").click(function(){
        $('#searchResults').children().remove();
        var l = document.getElementById('properSearch').value.length;
        if(l > 0){
            var searchjson = 
            {
                "search" : document.getElementById('properSearch').value
            };
            searchjs = JSON.stringify(searchjson);
            var search = {json:searchjs};
            $.ajax({
                type: "POST",
                url: "searchUsers.php",
                data: search,
                success: function(result)
                {     
                    var obj = jQuery.parseJSON(result);
                    $('#searchResults').next().remove();
                    for(var i = 0; i < obj.length; i+=1)
                    {
                        if(obj[i].user_id != localStorage.user_id)
                            $('#searchResults').append("<tr><td id = 'search_row'>" + obj[i].firstname + " " + obj[i].lastname + " </td> <td> <a OnClick = \"add();\" href = '#' id = 'friend_add' class = '" + obj[i].user_id + "' > add </a> </td> </tr> ");
                    }
                },
                error: function()
                {
                    alert('An Error has occured, please try again.');
                }
            });
        }
    });

    function add(){
        alert("clicked");
        //var theClass = this.className;
        //alert( theClass );
    };
});

編集:機能付き

    $(document).ready(function(){
    $("#searchBtn2").click(function(){
        $('#searchResults').children().remove();
        var l = document.getElementById('properSearch').value.length;
        if(l > 0){
            var searchjson = 
            {
                "search" : document.getElementById('properSearch').value
            };
            searchjs = JSON.stringify(searchjson);
            var search = {json:searchjs};
            $.ajax({
                type: "POST",
                url: "searchUsers.php",
                data: search,
                success: function(result)
                {     
                    var obj = jQuery.parseJSON(result);
                    $('#searchResults').next().remove();
                    for(var i = 0; i < obj.length; i+=1)
                    {
                        if(obj[i].user_id != localStorage.user_id)
                            $('#searchResults').append("<tr><td id = 'search_row'>" + obj[i].firstname + " " + obj[i].lastname + " </td> <td> <a href = '#' class = 'friend_add' id = '" + obj[i].user_id + "' > add </a> </td> </tr> ");
                    }
                },
                error: function()
                {
                    alert('An Error has occured, please try again.');
                }
            });
        }
    });

});

$('#searchResults').on('click', '.friend_add', (function(){
    alert("clicked");
)};

前もって感謝します

4

2 に答える 2

1

インライン イベント ハンドラーを使用する代わりに、すべての要素に共通のクラスを与え、以下を使用してイベントを委譲することを検討してjQuery.on()ください。

$("#searchResults").on("click", ".friend_add", add);
于 2012-10-18T11:15:18.177 に答える
0

add 関数は無名関数内で定義されているため、インライン イベント ハンドラーは add 関数を見つけることができません。document.reader ハンドラの外側で add を定義してみてください。

于 2012-10-18T11:08:06.527 に答える