1

関数を実行する必要があるテーブルがあります。ただし、これは検索結果ページにあり、検索が実行された後 (または結果の別のページが読み込まれた後)、div 内のコンテンツが変更されます。残念ながら、データを変更するために呼び出される ajax メソッドにアクセスできません (これはサイト全体でグローバルに使用される関数であり、このページに変更することはできません)。

私がやろうとしているのは、 $("#search_results) div が変更されるたびに、結果セットをループし、インラインで定義されている onclick イベントを削除し、独自の onclick 関数を使用することです。ここにサンプル (これは、ページが初めて読み込まれたときに機能しますが、ajax 呼び出しによって検索結果が変更された後では機能しません):

<script type='text/javascript'>

    $(document).live(function(){
        alert('fired'); 
        $('table.lookup_table tr').each(function(){
            $(this).removeAttr('onclick');      
        });
    });

$('table.lookup_table tr').on('click', function(event){
        event.preventDefault();
        $(this).removeAttr('onclick');  
        var pacware = $.trim($(':nth-child(1)', $(this)).html());
        var site = $.trim($(':nth-child(2)', $(this)).html());

        window.location = '<?php echo matry::here_to('edit');?>&pacware_code=' + pacware + '&site_id='+site;
        return false;
    });
</script>

*また、IE 8で動作させるにはこれが必要です*

4

1 に答える 1

1

あなたはこれを試すことができますが、それは良い方法ではありません:

$('body').on('click', 'table.lookup_table tr', function(e){
        e.preventDefault();
        e.stopPropagation();
        //...
        return false;
    });

クリックするたびに、一致する要素をクリックしたかどうかを確認し、一致table.lookup_table trする場合はイベント ハンドラーを実行します。

于 2013-02-26T23:22:00.880 に答える