,我需要選擇並找到H2標籤中的哪一個點擊一個特定的div中的HTML價值,這就是我想現在,但無濟於事:
當點擊.square,我試圖運行這個命令:
$(this).find('h2').html();
,這是HTML的樣子:
<div class="square" id="2"><h2>Title</h2><h3>Comment</h3></div>
我在做什麼錯?
謝謝
,我需要選擇並找到H2標籤中的哪一個點擊一個特定的div中的HTML價值,這就是我想現在,但無濟於事:
當點擊.square,我試圖運行這個命令:
$(this).find('h2').html();
,這是HTML的樣子:
<div class="square" id="2"><h2>Title</h2><h3>Comment</h3></div>
我在做什麼錯?
謝謝
您的代碼必須放在一個單擊處理程序中,像這樣:
$('.square').on('click', function() {
alert($(this).find('h2').html());
}
以外的點擊處理程序,this
點window
和$(window).find('h2')
沒有找到任何東西,因此.html()
產量undefined
。
如果您<div class="square">
是動態生成的,你需要「鉤子」的點擊處理程序上,將不會從頁面中消失最接近的元素。
$('#element_id').on('click', '.square', function() {
alert($(this).find('h2').html());
}
也許你必須在文檔準備好後運行代碼。
$(function() {
$(".square").click(function() {
console.log($(this).find('h2').html());
});
});
$(function() {});
是寫短文的方法$(document).ready(funciton() {});
。
而且你的代碼已經被放置的點擊事件監聽器的回調。
這樣做更有效的方式是:
$('body').on('click', '.square', function(event) {
var html = $(this).find('h2').html();
console.log(html);
});
爲什麼會更有效率? –
因爲你從體內委託了事件,所以它的速度更快 – borisrorsvort
什麼更快?事件的處理?是不是必須一直冒泡到'body',然後jQuery必須測試它是否源於'.square'元素,因此它被處理*較慢*?將事件處理程序直接綁定到元素本身可以避免這一切。 –
你的代碼是完全正確的。您可能會在此處看到一個應用程序示例(或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>
您爲什麼認爲自己做錯了什麼?怎麼了?你還必須解釋你所面臨的問題,而不僅僅是你想要達到的目標。 –
你把它分配給一個變量,追加它,隱藏它? – tymeJV
@FelixKling我試圖設置的東西作爲變量和警報(),但它提醒「未定義」 – Taimur