2015-09-26 58 views
2

我試圖在我的HTML中使用<template></template>標籤來保存可以顯示在頁面中的內容。我目前使用html()來抓取模板內容,並使用html()將它們寫入div。這一切都按預期工作,但是當內容顯示在div中時,按鈕點擊事件不會觸發。所以內容似乎超出了範圍。我想這可能是因爲它使用html()加載。有沒有更好的方法可以使用,還是由其他問題引起的問題?JQuery html()和模板

實施例代碼

window.launcher = function(){ 
    $('#launch').on('click', function(){ 
     var content = $('#content').html(); 
     $('#container').html(content); 
    }); 
}; 

window.launcher2 = function(){ 
    $('#launch2').on('click', function(){ 
     alert('You clicked me!'); 
    }); 
}; 

第二功能不閃光。

Fiddle

編輯:固定錯字

+1

使用[事件代表團(http://learn.jquery.com/events/event-delegation/ )''('#container')。on('click','#launch2',function(){'檢查https://jsfiddle.net/tusharj/bch0ym09/1/ – Tushar

+0

有一個'u'missing in你的代碼和$''la(u)nch2')附近的小提琴。 – radscheit

+0

@Tushar,但是如果可點擊元素可以是任何東西,比如鏈接,按鈕,文本等,怎麼辦? – Ally

回答

0

你必須把你的jQuery的行動中作用在您objecty前。 launch2存在。你的代碼沒有用,因爲你試圖在那個元素不存在的地方抓住元素。下面

工作exampe:

$('#launch').on('click', function(){ 
     var content = $('#content').html(); 
     $('#container').html(content); 
      $('#launch2').on('click', function(){ 
       alert('You clicked me!'); 
      }); 
    }); 

也u必須在此處鍵入:

$('#lanch2') it should be $('#launch2') 
+1

儘管代碼很有用,但它應該總是附帶說明,但這並不是很長,但它是可以預期的。 – peterh