2014-11-02 100 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