Javascript:从Dynamicly创建的实例调用嵌套函数

Javascript:从Dynamicly创建的实例调用嵌套函数,javascript,jquery,function,oop,object,Javascript,Jquery,Function,Oop,Object,我试图创建同一函数的多个实例,但希望保留它们自己的属性。因此,当在第一个实例中创建按钮时,该按钮的onclick事件应指向同一个第一个实例中的函数。但是(这个)关键字在这种情况下不起作用。我知道还有别的事要做 JS: 函数更新IAS(mac、realName、displayName){ var prevHtml=jQuery(“#”+mac).html(); var formHtml=“”; formHtml+=“应用”; jQuery(“#”+mac).html(formHtml); var

我试图创建同一函数的多个实例,但希望保留它们自己的属性。因此,当在第一个实例中创建按钮时,该按钮的onclick事件应指向同一个第一个实例中的函数。但是(这个)关键字在这种情况下不起作用。我知道还有别的事要做

JS:

函数更新IAS(mac、realName、displayName){
var prevHtml=jQuery(“#”+mac).html();
var formHtml=“”;
formHtml+=“应用”;
jQuery(“#”+mac).html(formHtml);
var apply=function(){
警报(mac);
};
}
HTML:


设备1
装置2

JS Fiddle:

而是使用jQuery事件处理程序和
数据-*
属性来存储数据,如

jQuery(函数($){
$('.editor')。在('单击','.display',函数()上{
$(this).replace为(“+”Apply”);
});
$('.editor')。在('click','button.btn',function()上{
警报($(this).最近('.editor')。数据('name'));
});
})

设备1
装置2

而是使用jQuery事件处理程序和
数据-*
属性存储数据,如

jQuery(函数($){
$('.editor')。在('单击','.display',函数()上{
$(this).replace为(“+”Apply”);
});
$('.editor')。在('click','button.btn',function()上{
警报($(this).最近('.editor')。数据('name'));
});
})

设备1
装置2

我对您的代码做了一些更改

  • 已将第二个div的id更新为id2
  • 使用jquery添加了click处理程序 HTML:

    <div id="id2">
        <div onclick="updateAlias('id1','android-8112ad950b0bca36','device 1')">Device 1</div>
    </div>
    <div id="id2">
        <div onclick="updateAlias('id2','android-8112ad950b0bca36','device 2')">Device 2</div>
    </div> 
    
    
    设备1
    装置2
    
    JS:

    函数更新IAS(mac、realName、displayName)
    {
    var prevHtml=jQuery(“#”+mac).html();
    var formHtml=“”;
    formHtml+=“应用”;
    jQuery(“#”+mac).html(formHtml);
    jQuery(“#”+mac+“-apply”)。单击(函数(){
    警报(mac);
    });
    }
    
    我对您的代码做了一些更改

  • 已将第二个div的id更新为id2
  • 使用jquery添加了click处理程序 HTML:

    <div id="id2">
        <div onclick="updateAlias('id1','android-8112ad950b0bca36','device 1')">Device 1</div>
    </div>
    <div id="id2">
        <div onclick="updateAlias('id2','android-8112ad950b0bca36','device 2')">Device 2</div>
    </div> 
    
    
    设备1
    装置2
    
    JS:

    函数更新IAS(mac、realName、displayName)
    {
    var prevHtml=jQuery(“#”+mac).html();
    var formHtml=“”;
    formHtml+=“应用”;
    jQuery(“#”+mac).html(formHtml);
    jQuery(“#”+mac+“-apply”)。单击(函数(){
    警报(mac);
    });
    }
    
    文档中出现重复的
    id
    即使我将其更改为id1-id2,问题仍然相同。在
    文档中出现重复的
    id
    处即使我将其更改为id1-id2,问题仍然相同。感谢@arun-p-johny,使用jQuery它将起作用。但我只是好奇是否有任何核心javascript方法也可以工作?谢谢@arun-p-johny,使用jQuery它会工作的。但只是好奇是否有任何核心javascript方法也可以工作?NP@AmitShah。如果工作正常。将其标记为正确答案。NP@AmitShah。如果工作正常。把它标为正确答案。
    <div id="id2">
        <div onclick="updateAlias('id1','android-8112ad950b0bca36','device 1')">Device 1</div>
    </div>
    <div id="id2">
        <div onclick="updateAlias('id2','android-8112ad950b0bca36','device 2')">Device 2</div>
    </div> 
    
     function updateAlias(mac, realName, displayName) 
    {
      var prevHtml = jQuery("#" + mac).html();
    
      var formHtml = "<input type='text' id='alias-" + mac + "' value='" + jQuery.trim(displayName) + "' />";
      formHtml += "<button id='"+mac+"-apply' class='btn btn-primary btn-xs' >Apply</button>";
    
      jQuery("#" + mac).html(formHtml);
      jQuery("#"+mac+"-apply").click(function() {
        alert(mac);
      });
    
    }