2014-11-02 101 views
0

我有一個元素從HTML模板解析,我想添加一個單擊事件,它似乎不工作。單擊事件處理程序不工作prepend解析html

但是當我像

$('#formatMe').click(); 

這裏添加元素點工作,但是當

var formats = appAPI.resources.parseTemplate("formats.html",result); 
$code=$(formats); 
$('#vid_div').prepend($code); 

但從parseTemplate

我寫點擊功能appAPI.ready不一樣的元素

低於

appAPI.ready(function($) { 

    $("#user-header").append("<div id='formatMe'>Download</div>"); 

    $('#some-div-in-web-site').append("<div id='vid_div'></div>"); 

      $('#formatMe').click(function(){ 

      var url="myurl"; 

      appAPI.request.get({ 
       url: url, 
       onSuccess: function (data) { 

       var result=appAPI.JSON.parse(data); 

       var formats = appAPI.resources.parseTemplate("formats.html",result); 

        $('#vid_div').html(''); 
        $code=$(formats); 
        $('#vid_div').prepend($code); 
       } 
      }); 
    }); 


    $('#close').click(function(){ 

     alert("dont'click on me!!!"); 
    }); 


}); 

Formats.html是這樣

<div id="vid_formats"> 
    <div id="close">&times;</div> 

    <div class="wrapper"> 
    <h1>Download Links</h1> 
     <ul> 
      <% for (var i=0; i<vids.length; i++) { %> 
      <li> 
       <a id="format" href="<%=vids[i]['url'] %>"><%=vids[i]['type']%> &nbsp;&nbsp;<%=vids[i]['quality']%> - <%=vids[i]['size']%> </a> 
      </li> 
      <% } %> 
     </ul> 
    </div> 
</div> 

依然沒能激發點擊事件,我在Firefox的測試。

回答

1

前言:由於的formats.html文件和結果陣列的內容不被提供,它也不會從你的例子清晰與ID 密切的元素被定義在哪裏,我製作的情景我相信你正在經歷。

在我重新創建的場景中,點擊事件處理程序按預期工作,我可以看到警報。以下是我重新創建的擴展文件,然後在Chrome中進行測試。

formats.html

<div> 
    <ul> 
     <% for (var i=0; i<sites.length; i++) { %> 
      <li><a href="<%=sites[i].url%>"><%=sites[i].name%></a></li> 
     <% } %> 
    </ul> 
</div> 
<div id="close">Close</div> 

extension.js

appAPI.ready(function($) { 
    var result = { 
      sites:[ 
       {url:' http://cnn.com ', name:'cnn'}, 
       {url:' http://yahoo.com ', name:'yahoo'} 
      ] 
     }, 
     formats = appAPI.resources.parseTemplate("formats.html",result); 

    $('<div id="player"></div>').prependTo('body'); 
    $code=$(formats); 
    $('#player').prepend($code); 
    $('#close').click(function(){ 
     alert('clicked me'); 
    }); 
}); 

[披露:我是Crossrider僱員]

+0

我做相同的除,我預先將我的$代碼添加到網站中的現有元素。 我認爲那裏的問題是,我會嘗試使用您的代碼,並讓您知道 – saikiran 2014-11-03 14:00:15

+0

請看看問題@Shlomo – saikiran 2014-11-05 18:41:26

+1

如前所述,該方法沒有問題。這可能是導致問題的代碼中的一些東西。如果您提供了擴展名,我很樂意看看。 – Shlomo 2014-11-05 19:13:20