繁体   English   中英

每个语句中的jQuery全局变量

[英]jQuery Global Variable in Each Statement

因此,我正在努力做到这一点,以便可以在整个文档中使用jQuery在.each()语句中全局创建一个变量。

我要放置“ var previous = item.channel.display_name”的位置是我要创建的变量。

码:

jQuery(function(){ 
var streams = null;
jQuery.getJSON("https://api.twitch.tv/kraken/search/streams?q=path%20of%20exile&callback=?", function (data) {
    streams =  data.streams;
    jQuery("#next").show();
    jQuery("#prev").show();
    jQuery("#next").click();
});

var globalCnt = 0;
jQuery("#next").click(function() {
    var localCnt = 0;
    var itemsToShow = 1;
         jQuery.each(streams, function (index, item) {
             localCnt++;
             if(localCnt > globalCnt && itemsToShow > 0) {
             jQuery("#content").empty();
             jQuery("#content").html('<object style="margin-left:0.5%;" type="application/x-shockwave-flash" height="378" width="620" id="live_embed_player_flash" data="http://www.twitch.tv/widgets/live_embed_player.swf?channel=' + item.channel.display_name + '" bgcolor="#000000"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf" /><param name="flashvars" value="hostname=www.twitch.tv&channel=' + item.channel.display_name + '&auto_play=false&start_volume=25" /></object><iframe frameborder="0" scrolling="no" id="chat_embed" src="http://twitch.tv/chat/embed?channel=' + item.channel.display_name +'&amp;popout_chat=true" height="378" width="350"></iframe>');
                 globalCnt++;
                 itemsToShow--;
                 var previous = item.channel.display_name;
             }
        });
    if(itemsToShow > 0)
        jQuery("#showBtn").hide();
});
jQuery("#prev").click(function() {
    var localCnt = 0;
    var itemsToShow = 1;
         jQuery.each(streams, function (index, item) {
             localCnt++;
             if(localCnt > globalCnt && itemsToShow > 0) {
             jQuery("#content").empty();
             document.write(previous);
             jQuery("#content").html('<object style="margin-left:0.5%;" type="application/x-shockwave-flash" height="378" width="620" id="live_embed_player_flash" data="http://www.twitch.tv/widgets/live_embed_player.swf?channel=' + previous + '&auto_play=false&start_volume=25" /></object><iframe frameborder="0" scrolling="no" id="chat_embed" src="http://twitch.tv/chat/embed?channel=' + previous +'&amp;popout_chat=true" height="378" width="350"></iframe>');
                 globalCnt++;
                 itemsToShow--;
             } 
        });
    if(itemsToShow > 0)
        jQuery("#showBtn").hide();
});
});

创建全局变量没有错,但是如果您想正确地进行操作,则必须确定某些事情。

  • 如果可能,仅添加一个全局变量,然后将所有代码包装在该变量上。 创建许多全局变量不是一个好主意。

  • 对于您的情况,您应该创建类似以下内容的方法:var myApp = myApp || {}也就是说:myApp等于myApp(如果它已经存在,或者如果myApp先前不存在,则myApp将为空对象。

然后,此行:var previous = item.channel.display_name;

将变为:myApp.previous = item.channel.display_name。

我不是在宽恕全局变量,但是如果您想在另一个范围内创建一个全局变量,可以将其添加到window对象中:

window.globalVal = "foo";

window是指向其自身的全局对象的属性。 向其添加属性等同于创建全局变量。

因此,对于您的情况,您可以

window.previous = item.channel.display_name;

然后可以从任何地方访问上一个-当然,假设它没有被遮挡。 最后一点,如果我没有提到全局变量通常不是一个好主意,那我会被忽略。 谨慎使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM