jQuery n-child仅选择第一个元素

Sadikshya Luintel

我试图在其特定子项上添加一个单击功能,该函数.articlewikipedia根据pageid从请求中收到的信息显示某些链接但是所有的.article都指向同一页面。

HTML:

<section id="body-article">
    <div id="body-container">

    </div>
</section>

JavaScript(jQuery):

function SendRequest(searchEntry){
    $.ajax({
        url: `https://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=${searchEntry}`,
        type: 'GET',
        dataType: 'jsonp',
        headers: {'Api-User-Agent': 'WikiReader/0.1.0'}
      }).done(function(data, status) {
          console.log(data);
          GenerateArticle(data);
      }).fail(function(data, status) {
        console.log("ERROR! " + status);
      });
}

function GenerateArticle(data){
    //shows all the article in a div
    var totalArticleLength = data.query.search.length;
    for(var i=0;i<totalArticleLength;i++){
        var title= data.query.search[i].title;
        var pageid=data.query.search[i].pageid;
        var snippet=data.query.search[i].snippet;
        //responsible for showing single data
        CreateSingleArticle(title,pageid,snippet);
        // PROBLEM IS WITH THE BELOW LINE
        $(`.article:nth-child(${i+1})`).on("click",function(){
            window.open(`https://en.wikipedia.org/?curid=${pageid}`, 'Wikipedia', 'window settings');
        })
    }

}
function CreateSingleArticle(title,pageid,snippet){
    //creates a individual data
    html =
    `<div class="article">
        <div class="side-bar"></div>
        <div class="article-container">
            <div class="article-header">
                ${title}
            </div>
            <div class="snippet">
                ${snippet}
            </div>
        </div>
    </div>`
    $("#body-container").append(html);
}
法赫

答案很简单。您遇到了JavaScript范围问题。看一下立即函数调用。在这里阅读更多。http://tobyho.com/2011/11/02/callbacks-in-loops/

for(var i=0;i<totalArticleLength;i++){
(function(index, pageId){

        var title= data.query.search[index].title;
        var pageid=data.query.search[index].pageid;
        var snippet=data.query.search[index].snippet;
        //responsible for showing single data
        CreateSingleArticle(title,pageid,snippet);
        // PROBLEM IS WITH THE BELOW LINE
        $(`.article:nth-child(${index+1})`).on("click",function(){
            window.open(`https://en.wikipedia.org/?curid=${pageId}`, 'Wikipedia', 'window settings');
        })
})(i, data.query.search[i].pageid)
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用jQuery选择第一个“ n”项

从 jQuery 中的父元素内部获取第一个 (n) 个元素

CSS选择器(第一个,第一个孩子,第n个孩子)定位未在Javascript / Jquery中选择

jQuery each()仅命中第一个元素

用jQuery仅选择第一个ul中的最后一个li

如果选择第一个元素,则选择其他元素 jquery

JQuery:仅当所选元素是第一个元素(占位符)时,将所有选择元素设置为斜体

jQuery选择表仅返回第一个tr

jQuery-仅针对具有类的第一个元素

jQuery效果仅应用于第一个元素

jQuery仅捕获html中的第一个元素(在Django应用中)

Click事件仅影响第一个元素jquery

jQuery函数仅适用于laravel中foreach的第一个元素

类上的jQuery click事件仅触发第一个元素

用jQuery添加类仅适用于第一个元素

jQuery 代码仅适用于第一个元素

jQuery FadeOut仅适用于第一个元素

jQuery递归脚本仅适用于第一个元素

jQuery-事件委托仅针对第一个新创建的元素

从Scala的地图中选择第一个“ N”个元素

jQuery:第一个n个孩子淡入淡出

如何使用jQuery选择使用for循环元素创建的第一个单选按钮

如何使用jQuery选择下拉列表中的第一个元素?

无法在jQuery mobile中选择组合框的第一个元素

如何使用jQuery选择每个组中的第一个元素?

Jquery 只选择带有类的第一个元素而不是全部

使用jQuery在Select元素中选择第一个选项

jQuery,如何通过属性的第一个位置值选择元素

选择元素通过jquery进行迭代,第一个保持不变