0

jqGrid の列の 1 つにカスタム フォーマッタを使用しました。フォーマッタは次のとおりです。

formatter: function(cellvalue, options, rowObject) {
    var link = $('<a>', {
        text: 'Click Me'
        href: '#',
        click: function() {
           alert('sdfsfsd');
           // my stuff
        }
    });

    return link[0].outerHTML;
}

2 つの問題があります。

  • リンクはクリックできません。リンクをクリックすると、行が選択されます! 行の選択をバイパスせず、リンクをクリック可能にする方法はありますか? [更新: beforeSelectRow: function(row, e) { return false;} を使用して選択を無効にしようとしました。しかし、まだリンクをクリックすることはできません。セルの値が実際にリンクであることを html で確認できます。]

  • リンクはリンクのようではありません。つまり、通常のように青/下線が引かれていません。CSS で何もオーバーライドしていません。

大変助かりました!

ありがとう Vivek Ragunathan

更新:これはグリッド自体の問題ではないことがわかりました。ただし、クリック ハンドラーはハイパーリンクにリンクされません。代わりにこのコードも試しましたが、うまくいきません!

var link = $('<a>', {
    text: 'Click Me'
    href: '#'
}).click(function() {
   alert('sdfsfsd');
   // my stuff
});

ありがとう

4

1 に答える 1

1

リンクは (jquery を使用して) 動的に作成され、そのオブジェクトの HTML が消費されるため、ハンドラーは HTML の一部にはなりません。したがって、この場合、リンクは文字列から直接作成する必要があります。

formatter: function(cellvalue, options, row) {
    var handler = "someHandlerDefined(" + options.rowId + ")";
    return "<a href=# onclick='" + handler + "'>Link</a>";
}

それはうまくいきました!

于 2013-10-18T09:09:22.977 に答える