2013-04-15 100 views
0

,我需要選擇並找到H2標籤中的哪一個點擊一個特定的div中的HTML價值,這就是我想現在,但無濟於事:

當點擊.square,我試圖運行這個命令:

$(this).find('h2').html(); 

,這是HTML的樣子:

<div class="square" id="2"><h2>Title</h2><h3>Comment</h3></div> 

我在做什麼錯?

謝謝

+2

您爲什麼認爲自己做錯了什麼?怎麼了?你還必須解釋你所面臨的問題,而不僅僅是你想要達到的目標。 –

+0

你把它分配給一個變量,追加它,隱藏它? – tymeJV

+0

@FelixKling我試圖設置的東西作爲變量和警報(),但它提醒「未定義」 – Taimur

回答

5

您的代碼必須放在一個單擊處理程序中,像這樣:

$('.square').on('click', function() { 
    alert($(this).find('h2').html()); 
} 

以外的點擊處理程序,thiswindow$(window).find('h2')沒有找到任何東西,因此.html()產量undefined

如果您<div class="square">是動態生成的,你需要「鉤子」的點擊處理程序上,將不會從頁面中消失最接近的元素。

$('#element_id').on('click', '.square', function() { 
    alert($(this).find('h2').html()); 
} 
+0

我目前確實有它的地方肯定是工作,它只是返回「未定義」的h2.html :(使用JavaScript動態生成的整個HTML事情click處理,這是否能改變什麼? – Taimur

+0

@Taimur好吧,如果單擊處理程序便會啓動,但沒有發現任何項目,你完全有不同的問題。你或許應該與我們分享更多的代碼。 –

+0

那偉大工程,非常感謝:) – Taimur

1

也許你必須在文檔準備好後運行代碼。

$(function() { 
    $(".square").click(function() { 
     console.log($(this).find('h2').html()); 
    }); 
}); 

$(function() {});是寫短文的方法$(document).ready(funciton() {});

而且你的代碼已經被放置的點擊事件監聽器的回調。

1

這樣做更有效的方式是:

$('body').on('click', '.square', function(event) { 
    var html = $(this).find('h2').html(); 
    console.log(html); 
}); 
+0

爲什麼會更有效率? –

+0

因爲你從體內委託了事件,所以它的速度更快 – borisrorsvort

+1

什麼更快?事件的處理?是不是必須一直冒泡到'body',然後jQuery必須測試它是否源於'.square'元素,因此它被處理*較慢*?將事件處理程序直接綁定到元素本身可以避免這一切。 –

0

你的代碼是完全正確的。您可能會在此處看到一個應用程序示例(或fiddle):

<script> 
$(document).ready(function(){ 
    $("div#2").click(function(){ 
     var title = $(this).find('h2').html(); 
     $("span").text(title); 
    }); 
}); 
</script> 

<div class="square" id="1"><h2>I'll not work because my id is 1</h2></div> 
<div class="square" id="2"><h2>Click me and you'll see me below on the span!</h2></div> 
<span></span>