Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript。函数未在中工作。追加_Javascript_Jquery_Html_Dom_Append - Fatal编程技术网

Javascript。函数未在中工作。追加

Javascript。函数未在中工作。追加,javascript,jquery,html,dom,append,Javascript,Jquery,Html,Dom,Append,HTML JS for(变量i=0;i

HTML


JS

for(变量i=0;i”+
"" +
“+companyname+”+
“

”+地址+“

”+ “”; } $(“#1”).bind(“单击”),函数(){ window.location=“salon.html” });
问题: 所以首先我提取数据并输入3个变量,companyname,picture和address。我有x组这些数据。我想写一份清单。我可以列出,但该功能无法识别id,也无法工作。请帮忙。ty

这是因为
#salon1
元素是动态创建的。此外,在JQuery中不推荐使用。对于这种情况,您应该使用

更多

工作证明

var arr=[{“CompanyName”:“A”,“Picture”:https://via.placeholder.com/140x100,“地址”:1},{“公司名称”:“B”,“图片”:https://via.placeholder.com/140x100“,“地址:2}];
对于(变量i=0;i”+
“”;
$(“#列表沙龙”)。在(“单击”,“a沙龙”+(i+1)上,函数(){
警报(“重定向…”);
window.location=“salon.html”
});
}


    要将事件侦听器添加到动态创建的对象中,您需要使用
    document.createElement
    创建DOM对象。这样,即使在附加实际元素之前,也可以保留该元素

    然后,可以像使用查询字符串检索的任何其他对象一样使用它

    $(文档).ready(函数(){
    让数组=[“a”,“b”,“c”];
    for(设i=0;i
    
    #李斯特沙龙酒店{
    背景色:#eee;
    填充:0.5em;
    边缘底部:1米;
    }
    
    

    这是一个示例<
    JQuery
    中的code>.bind()
    已弃用。对于这种情况,您应该使用
    .on()

    for(变量i=0;i<5;i++){
    $(“#listsalon ul”).append(“
  • ”+ “+(i+1)+”
  • ”; $(“#沙龙”+(i+1))。在(“单击”,功能(){ 警报('单击') }); }
    
    

    $(“#沙龙1”)
    替换为
    $(“#沙龙”+(i+1))
    因为您的
    id在单页上应该是唯一的按钮绑定在循环之外。这样不行。我觉得问题出在后面。当我创建此id时,DOM树无法识别它。请交叉检查
    a
    标记。你的身份证生成正确吗?它不工作。我个人觉得问题是来自于附加。与身份证未被识别有关。@Jason似乎在为我工作。我已经用工作证明更新了答案。Tyvm。当我使用Sergio answer(上面的评论)时效果更好。他/她使用document.createElement,我认为这是一个更好的解决方案。我对按钮使用了ur代码,这有助于区分哪些按钮是哪个按钮。谢谢你在这里度过的时光。再一次,ty:)我不建议您使用
    .bind
    ,因为它从v3开始就被从jquery中删除了。请使用
    .on()
    我错过了这个解决问题的方法。让我补充一点,这是有效的。Tyvm。为了区分我点击的按钮,我使用了Saharsh提供的代码(下面的注释)。非常感谢你抽出时间来帮助我!不客气。在循环中添加事件侦听器时要小心,因为它们是累积的,最终可能会运行同一个函数数百次。
    <div id="listsalon">
       <ul data-role="listview" data-inset="true" data-filter="true" >
    
       </ul>
    </div>
    
    for (var i = 0; i < arr.length; i++) {
    
       companyname = arr[i].CompanyName;
    
       picture = arr[i].Picture;
    
       address = arr[i].Address;
    
       $("#listsalon ul").append("<li class='ui-corner-all'>" + 
                            "<a id=" + '"' + "salon" + (i + 1) + '"' + "><img src='" + picture +           
                            "'style='height:160px; width:200px;' class='ui-corner-all'>" +
                            "<h2 style='font-size:13px'>" + companyname + "</h2>" +
                            "<p style='font-size:10px'>" + address + "</p>" +
                           "</a></li>");
                    }
    
        $("#salon1").bind("click", function () {
            window.location = "salon.html"
        });
    
    $("#listsalon").on("click", "a#salon1", function () {
        window.location = "salon.html"
    });