1

チェックボックスをクリックした後にのみ(htmlがロードされたときではなく)、jqplotのオーバーレイでトリガーするにはどうすればよいですか。オーバーレイ オプションの表示を最初に false に設定すると、最初にオーバーレイがプロットに表示されず、トリガー関数を使用したときにオーバーレイが表示されません。プロットに使用するコードは次のとおりです。

<div id="fastest" style="margin-top:20px; margin-left:20px; margin-right:200px; width:800px; height:400px;">
<script class="code" type="text/javascript">
$(document).ready(function(){
var dataset="too long to be displayed here"
plot1 = $.jqplot('fastest', dataset, { 
    title: 'Test_figs',
    legend: {show:false},
    series: [{
        showMarker: false, 
        color: '#ED0E0E',
        label: 'R spectrum', 
        neighborThreshold: -1
    }],
    axes:{ 
        xaxis:{
            label:'Restframe Wavelength'
        },
        yaxis:{
            label:'Flux', 
            tickOptions:{formatString:'%.3e'}
        }
    },
    cursor:{ 
        show:true,
        zoom:true, 
        tooltipLocation:'sw'
    },

    Canvasoverlay: {
        show: false, 
        objects: [

            {verticalLine: {
                name: 'Na-ID', 
                x: 5893.000000, 
                lineWidth: 2, 
                color: '#F0630C', 
                lineCap:'butt', 
                yOffset:0, 
                shadow: true
            }}
        ]
    }
});
});

function NaID_trigger() {
var co = plot1.plugins.canvasOverlay;
var line = co.get('Na-ID');
if (line.options.show==false) line.options.show = true;
else line.options.show = false;
co.draw(plot1);
}
</script>

次に使用します:

<button onclick="NaID_trigger()">Na-ID</button>

たとえば、オーバーレイのオンまたはオフをトリガーします。

PS: オーバーレイ オプションで show=false の場合、アドバイスどおりに描画を replot に置き換えようとしましたが、機能しませんでした。

4

1 に答える 1

0

私は最終的に自分で解決策を見つけました.jqplotのロード時にオーバーレイを表示しないようにするには、オーバーレイ全体の「表示」オプションをtrueに設定しました。次に、各オブジェクト内で show を false に設定します。

形式の偶数ハンドラーに切り替える前に使用したプロット関数の外部の代わりに:

$("input[type=checkbox][name=Na-ID]").change(function(){
    plot1.plugins.canvasOverlay.get('Na-ID').options.show = this.checked;
    plot1.replot();
});

チェックボックスがチェックされ、最初ではなく選択された場合、プロットは選択されたオーバーレイを表示するようになりました。これが同じ問題を抱えている人に役立つことを願っています。

于 2014-05-21T15:56:31.800 に答える