1

(更新パネルを使用して)動的に入力されるテーブルがあり、ユーザーが選択した行をクリックすると、すべてのデータがラベルに書き込まれます。IEとChromeで正常に動作しますが、Firefoxは未定義と言います。5列の単純なテーブル。私は次のように動的にテーブルにバインドします:(コードの膨張を許してください)

    $('#tblResults').delegate(".aRow", "click", function () {
            var thatID = this.id;
            if (thatID != "0") {
                var wordz = "";
                var specialID = document.getElementById("hiddenChosenContact");
                var targetContact = document.getElementById("theContactLabel");

                for (var i = 1; i <= this.cells.length - 1; i++) {
                    if (i == this.cells.length - 1)
                        wordz = wordz + this.cells[i].innerText;
                    else
                        wordz = wordz + this.cells[i].innerText + " - ";
                }

                targetContact.innerHTML = wordz;
                specialID.value = thatID;
            }
            else {

            }
     });

行には、ロード時にIDとクラス名'aRow'が与えられます。完全なjquery$(this)のみを使用してみましたが、正直なところ、テーブル操作の構文についてはよくわかりません。

**編集。申し訳ありませんが、未定義の値がthis.cells[i].innerTextに含まれていることを意味します

**HTML編集

<table class="cvTableG" id="tblResults" cellPadding="0" cellSpacing="0" style="clear:left; width:100%; font-size:10px;">
            <thead>
              <tr class="aRow" id="1"><th width="14px;">&nbsp;</th>
                <th align="left" width="85px">Name</th>
                <th align="left" width="90px">Surname</th>
                <th align="left">Department</th>
                <th align="left">Customer</th>
              </tr>
            </thead>
            <tbody>
              <tr class="aRow" id="2">
                <td style="padding:0;"><input type="radio" name="myRadio" /></td>
                <td>Marty</td>
                <td>Elliott</td>
                <td>Development Place</td>
                <td>Rosebank</td>
              </tr>
              <tr class="aRow" id="3">
              <td style="padding:0;"><input type="radio" name="myRadio" /></td>
                <td>Sarah</td>
                <td>Lee</td>
                <td>Dev Place</td>
                <td>JHB</td>
              </tr>
               <tr class="aRow" id="4">
               <td style="padding:0;"><input type="radio" name="myRadio" /></td>
                <td>Marty</td>
                <td>Elliott</td>
                <td>Halfway House</td>
                <td>Durban</td>
              </tr></tbody></table>
4

2 に答える 2

1

以前、Firefox でのみ発生する Jquery セレクターに問題がありました。私の記憶が正しければ、解決策はidと同じ値でnameプロパティを追加することでした。したがって、あなたの場合は次のようになります。

<table class="cvTableG" id="tblResults" name="tblResults">

試してみて、うまくいくかどうか教えてください。

チュートリアルを見つけました。次のようなことを試してみてください。


たとえば、次の .delegate() コード:

$("table").delegate("td", "click", function() {
  $(this).toggleClass("chosen");
});

.on() を使用して記述された次のコードと同等です。

$("table").on("click", "td", function() {
  $(this).toggleClass("chosen");
});

多分それはこのように機能しますか?

于 2012-07-31T08:42:27.757 に答える
0

Firefoxは非標準のinnerTextプロパティを実装していません。標準化さtextContentた、おそらく欲しかったですか?

于 2012-07-31T15:31:42.903 に答える