2012-08-07 81 views
2

我是jquery的新手。我有我的應用程序中的鏈接列表。我希望能夠獲取任何鏈接的title屬性,並在單擊鏈接時將其放在頁面上的文本框中。這是我到目前爲止,但它不起作用:對文本框的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">​</p> 

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

任何幫助將不勝感激。謝謝!

+1

你一定要閱讀'attr'文檔:http://api.jquery.com/attr/。 '.attr('title')'返回一個**字符串**。字符串沒有'.click'方法。不要只是把東西放在一起,閱讀文檔,並看看例子。 – 2012-08-07 16:27:18

回答

2

你有很多正確的關鍵字,但他們沒有很好的連線。例如,.attr()吸氣劑不可鏈接。

這得有一個標題的所有鏈接,並添加單擊處理對他們說:

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

點擊時,文本框的值將與鏈接的title屬性的值替換。

這可能有點冗長。如果你是新手,我建議最初寫更多的東西,因爲它使調試更容易。一旦你更熟悉jQuery的做事方式,更密集的鏈式方法將更加自然。

$('a[title]').on('click', function(){ 
    var $link = $(this); 
    var titleText = $link.attr('title'); 
    var $textbox = $('#myTextBox'); 
    $textbox.val(titleText); 
}); 
+0

由於他是新手,你應該注意缺少分號。我不明白,當我是新人的時候,如果有人告訴我這件事,那肯定會有所幫助。另外,使用'on()'爲+1提供良好的答案。 – Purag 2012-08-07 16:38:05

+0

@Purmou我不完全確定你的意思是關於分號。在這種情況下並沒有故意遺漏。你是說它應該以任何方式工作(它應該)? – 2012-08-07 16:39:38

+0

不,我的意思是''attr('title')'後面沒有分號。 – Purag 2012-08-07 16:41:08

0

我有點看,導致你產生這樣的邏輯,但我強烈建議你閱讀docsAPI Reference,使你得到一個更好地瞭解什麼就做什麼。

也就是說,這應該做的伎倆爲您提供:

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

的解釋,讓你可以這裏發生了什麼的想法:

而不是使用click()的,我使用on(),這是代表事件而不是將它們附加到特定事件。因此,如果它檢測到任何p元素上的單擊事件,並且只要該元素的目標是a元素給定p元素,它將執行該處理程序。

然後,我們將點擊鏈接的title屬性的值賦予變量title

然後,我們只是將輸入的value屬性設置爲所述標題變量,並且瞧。

祝你好運!