2012-07-29 249 views
1

有一個PHP腳本,由於用戶的查詢創建多個<p>text</p>元素。 我想創建一個選項,每次用戶點擊某個元素時,這些元素中的文本將出現在文本框中。 直觀的方式做這樣的任務是:jQuery選擇多個元素

<p class="c1"> textA...</p> 
<p class="c2"> textB...</p> 
<p class="c3"> textC...</p> 
<p class="c4"> textD...</p> 

和jQuery代碼將是:

$("p.c1").click(function(){ code... } 
$("p.c2").click(function(){ code... } 
etc ... 

是否有實現該功能的任何巧妙的方法?

任何建議將是有益的,

在此先感謝

回答

1

您可以將多個類分配給HTML元素。你可以改變你的PHP腳本來輸出多重類。即

<p class="c1 clickable"> textA...</p> 
<p class="c2 clickable"> textB...</p> 
<p class="c3 clickable"> textC...</p> 
<p class="c4 clickable"> textD...</p> 

然後你可以使用點擊功能。

$("p.clickable").click(function() { 
       $('#yourtextbox').val($(this).text()); 
      }); 

JSFIDDLE

4

事件代表團。

$('body').on('click', 'p[class^=c]', function(evt) { 
    var clickedPara = $(this); 
}); 

在那裏,我的段落,其class屬性與c開始進行篩選。這只是示範,但最終可能不是非常水密。你應該給你的元素一個共同的類。如果這個類是,比如說,「clickablePara」,你也可以使用

$('body').on('click', 'p.clickablePara', function(evt) { 

事件委託意味着你綁定一個事件,火災時,而不是結合大量的活動,以每個可能的要素評估觸發因素。如果這對你來說是新的,那麼值得研究。如果你碰巧在英國,即將發佈的.NET Magazine版本有一篇文章由我討論。

+0

= $(本)的.text() – Austin 2012-07-29 18:54:18

+0

謝謝你的回答,什麼是 '功能(EVT)' 的含義? – Itamar 2012-07-29 18:57:42

+0

這是事件回調函數。 jQuery自動將事件對象轉發給函數。你可能不需要這個,但重要的是要知道這是傳遞給所有的事件回調(即使在本地JS中,使用'addEventListener') – Utkanos 2012-07-29 21:46:02

1

它一點兒也不說一下插入使用Ajax動態元素任何東西,所以我猜的元素創建服務器端的頁面輸出前,該代表團is'nt neccessary?

$("p[class^='c']").on('click', function() { 
    $("#textboxID").val(this.innerHTML); 
}); 

FIDDLE