0

私は次の機能を持っています:

if ($(this).find('#sel').length == 0) {
    var before = $(this).text();
    var title_id = $(this).parent().attr('id');
    $(this).html("<select id='sel' onchange='selectdone(this, title_id=title_id)>
                   ...</select>");
}

これから私は得Uncaught ReferenceError: title_id is not definedます。onchange4 行目の内部の関数が、以前に定義した変数を取得しないのはなぜですか? 上記を正しく書き直すにはどうすればよいですか?

4

3 に答える 3

2

これですか?

$(this).html("<select id='sel' onchange='selectdone(this, "+title_id+");'>...</select>");
于 2012-06-26T22:51:07.283 に答える
0

ここで文字列連結を使用します。

$(this).html("<select id='sel' onchange='selectdone(this, title_id=" + title_id +");'>...
于 2012-06-26T22:51:37.177 に答える
0

これは、「変更」ハンドラーを文字列の一部として定義しているために発生しているため、言語はそこにコードがあることを認識していません。

これを試して:

$(this).html($("<select/>", {
  id: 'sel',
  change: function() { selectdone(this, title_id) }
}));

とにかくjQueryを使用しているので、「onfoo」属性ではなく、ライブラリを介してイベントハンドラーを管理する習慣を身に付ける必要があります。

于 2012-06-26T22:51:48.860 に答える