2

私はjqueryを初めて使用します。アプリにリンクのリストがあります。リンクのタイトル属性を取得して、リンクがクリックされたときにページのテキストボックスに配置できるようにしたい。これは私がこれまでに得たものですが、機能しません:

 <p><a href="#" title="text I want to get">Link 1</a></p>
 <p><a href="#" title="more text I want to get">Link 2</a></p>
 <p><input id="myTextBox" type="text">​&lt;/p>

$("a").attr("title").click(function () {
$('#myTextBox').attr($(this).attr());
});

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

2

あなたはたくさんの正しいキーワードを持っていますが、それらは完全に正しく配線されていません。たとえば、.attr()ゲッターは連鎖できません。

これにより、タイトルのあるすべてのリンクが取得され、クリックハンドラーが追加されます。

$('a[title]').on('click', function(){ 
  $('#myTextBox').val( $(this).attr('title') );
  //                            ^^ this returns a string and passes it to .val()
});

クリックすると、テキストボックスの値がリンクのタイトル属性の値に置き換えられます。

これはもう少し冗長になる可能性があります。初めての方は、デバッグがはるかに簡単になるので、最初はこのようなものを書くことをお勧めします。jQueryのやり方に慣れれば、より高密度で連鎖的なアプローチがより自然になります。

$('a[title]').on('click', function(){ 
  var $link = $(this);
  var titleText = $link.attr('title');
  var $textbox = $('#myTextBox');
  $textbox.val(titleText);
});
于 2012-08-07T16:27:27.283 に答える
0

これを作成するに至ったロジックはある程度わかりますが、何をすべきかをよりよく理解できるように、ドキュメントAPIリファレンスを読むことを強くお勧めします。

そうは言っても、これでうまくいくはずです。

$('p').on('click', 'a', function(){
    var title = $(this).attr('title');
    $("#myTextBox").val( title );
});

ここで何が起こっているのかを理解できるようにするための説明:

を使用する代わりに、を使用しclick()on()います。これは、特定のイベントにイベントをアタッチするのではなく、イベントをデリゲートします。したがって、任意の要素でクリックイベントを検出し、その要素のターゲットがその特定の要素pの要素である限り、ハンドラーを実行します。ap

次に、titleクリックしたリンクの属性の値を変数に割り当てますtitle

次にvalue、入力の属性を上記のタイトル変数に設定します。

幸運を!

于 2012-08-07T16:35:18.230 に答える