0

テーブル内にプログラムでリンクを追加しようとしています。

$("#p"+col).append("<a href='#' id='tablep"+col+"' class='ui-link-inherit' onClick='tableSelect('p"+col+"')'></a>");

...'tableSelect(' p "+ col +"')'> ...が一重引用符で囲まれていることに注意してください。ただし、そのパラメーターも引用符で囲む必要があります。したがって、実行すると、そのtableSelect(ように切断され、他の場所にスローp1)されます。

コンソールでの表示は次のとおりです。

<a id="tablep1" class="ui-link-inherit" p1')'="" onclick="tableSelect(" href="#"></a>

私が何を意味するのか分かりますか?とにかく、これを回避する方法はありますか?

4

4 に答える 4

4

jQueryを使用して要素を構築するためのはるかにクリーンな方法があります。

$("#p"+col).append($("<a>", {
  href: '#',
  id: 'tablep' + col,
  "class": 'ui-link-inherit',
  click: function() { tableSelect('p' + col); }
}));
于 2013-01-02T19:23:03.283 に答える
3

onclick属性は、イベントをアタッチする非常に時代遅れの方法です。jQueryを使用してHTMLを挿入しているので、それを使用してイベントをバインドしてみませんか?これを試して:

var $a = $("<a href='#' id='tablep" + col + "' class='ui-link-inherit'></a>").click(function() {
    tableSelect(this);
});
$("#p" + col).append($a);

function tableSelect(obj) {
    // do something with the clicked object
}

idインクリメンタルまたはclass属性を使用することは、メンテナンスにとって大きな苦痛であり、将来の開発を妨げることにも注意する価値があります。より良い方法は、クラスとDOMトラバーサルを使用して、必要な特定の要素を見つけることです。

于 2013-01-02T19:22:31.987 に答える
1

jQueryを使用しているので、文字列の連結を介してHTMLをビルドしないでください。

var newAnchor = $('<a>')
    .attr('id', 'tablep' + col)
    .addClass('ui-link-inherit')
    .click(function () {
        tableSelect('p' +col);
    })
    .appendTo($("#p"+col));
于 2013-01-02T19:25:20.743 に答える
0

文字列内の引用符はバックスラッシュでエスケープする必要があります。

"\"";

'\'';
于 2013-01-02T19:22:03.727 に答える