0

複数のファイル名を持つ列を含むテーブルがあります。ファイル名は、実際には URL を指すリンクと、ローカル ファイルを指すリンクです。ローカル ファイルを正常にダウンロードし、個別にクリックすると、新しいウィンドウで URL を指すことができます。

ただし、 内の js 関数を介してファイル名を渡して動的にこれを実行しようとするhrefと、Uncaught SyntaxError: Unexpected token :. これは、パラメーターを指定せずに js 関数を呼び出すだけでは問題にならないようですが、すべてのリンクは列の最後のファイル名を指しています。ブラウザの下部にjavascript:openLink(filename)適切なファイル名が表示されますが、その後エラーが発生します。

テーブル

これは私のコードです:

function searchAjax(){
    var $table = $("#tableGrid").tablesorter(),
            $tbody = $table.children("tbody");
            $.ajax({
                dataType: 'json',
                url: 'table_results',
                type: 'GET',
                data: $('#filterForm').serialize(),
                success: function(data) {
                    $("#tableGrid").find("tr:gt(0)").remove();
                    $.each(data, function(index, result) {
                        function openLink(value){
                            var link = value;
                            if(link.indexOf("http") > -1 ){
                                window.open(link, "_blank");
                            }
                            else{
                                location.href="/projectv1?fileName="+link;
                            }
                        };
                        $tbody.append(
                                "<tr>" +
                                "<td>" + result.regionCode + "</td>" +
                                "<td>" + result.nationCode + "</td>" +
                                "<td>" + '<a href="javascript:openLink('+result.link+')" target="_blank">link</a></td>"' +
                                "</tr>");

                    });
                        $("#tableGrid").trigger("update");
                }
            });
        };
4

1 に答える 1

2

このようにhtml追加コードを変更できます

$tbody.append(
    "<tr>" +
    "<td>" + result.regionCode + "</td>" +
    "<td>" + result.nationCode + "</td>" +
    "<td>" + '<a class="customLink" data-url="'+result.link+'">link</a></td>"' +
    "</tr>");

クリック イベント ハンドラーを customLink に追加できます。

$(this).data('url') は、html 要素の data 属性からリンク データを取得します。

jQuery(document).on(
{    
    click: function(e) 
    {
        var url = $(this).data('url');
        openLink(url);
    }
}
, '.customLink');

また、openLink 関数定義を外部スコープに移動する必要があります

于 2014-10-14T07:39:27.230 に答える