如何在单独的函数中获取此变量?(jQuery)

How do I grab this variable in a separate function? (jQuery)

本文关键字:变量 jQuery 获取 单独 函数      更新时间:2023-09-26

我试图在最后一个函数中使用TsearchResultID,但不知道如何访问它…在这个函数中($(document).on('click','.slideYThumbnail',function(event){)

    function QueryGetta0() {
        var TTsearchQuery = 'x';
        return TTsearchQuery;
    }
    function QueryGetta1() {
        return $.get(
            "https://www.googleapis.com/youtube/v3/search",{
            part: 'snippet',
            maxResults: 1,
            q: YTSearchQueryText,
            type: 'video',
            key: ''}
        );  
    } 
   $(document).on('click', '.lister ul span', function(event) {
        QueryGetta1()
        .done(function(data) {
            var TsearchResultID = data.items[0].id.videoId;
            var target = '<div class="slideYThumbnail"><img class="slideYThumbnailInside" src="http://img.youtube.com/vi/' + TsearchResultID + '/0.jpg"></img></div>';
        });
    }); 
    $(document).on('click', '.slideYThumbnail', function(event) {
        alert(TsearchResultID);
    });   

您可以在全局范围外创建一个对象来管理它:

var obj = {
   TsearchResultID : "" // <---declare it here.
};
function QueryGetta0() { 
  // other code as is.
}
function QueryGetta1() {
  // other code as is.
}
$(document).on('click', '.lister ul span', function(event) {
    QueryGetta1()
    .done(function(data) {
        obj.TsearchResultID = data.items[0].id.videoId; // <---put value here.
        var target = '<div class="slideYThumbnail"><img class="slideYThumbnailInside" src="http://img.youtube.com/vi/' + TsearchResultID + '/0.jpg"></img></div>';
    });
}); 
$(document).on('click', '.slideYThumbnail', function(event) {
    alert(obj.TsearchResultID); // now access it here.
}); 

如果您想在函数之间共享变量,您必须在函数之外定义它们。这通常涉及Global Variables,但污染全球范围不是一个好的做法。

另一种选择是,将所有事件绑定封装在函数registerEvents()中,如果在事件处理程序之外定义变量,则可以跨处理程序访问它们,但它仍然是函数的一部分,因此可以防止污染。这也有助于将所有绑定保持在一起,使调试更加容易。

示例

function registerEvents() {
  var sharableVar = null;
  $("#btnInit").on("click", function() {
    sharableVar = Math.floor(Math.random() * 10);
  });
  $("#btnNotify").on("click", function() {
    console.log(sharableVar);
  })
}
registerEvents()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button id="btnInit">Initialize</button>
<button id="btnNotify">Notify</button>

尝试使用在全局范围中声明的数组。

var TsearchResultIDArray = []; //declaration of array
$(document).on('click', '.lister ul span', function(event) {
    QueryGetta1()
    .done(function(data) {
        TsearchResultIDArray.push = data.items[0].id.videoId;//push the value to the array
        var target = '<div class="slideYThumbnail"><img class="slideYThumbnailInside" src="http://img.youtube.com/vi/' + TsearchResultID + '/0.jpg"></img></div>';
    });
}); 
$(document).on('click', '.slideYThumbnail', function(event) {
    alert(TsearchResultIDArray[0]); // access the first element of the array.
}); 

使用会话存储设置/获取值。

$(document).on('click', '.lister ul span', function(event) {
    QueryGetta1()
    .done(function(data) {
        sessionStorage.setItem('TsearchResultID',data.items[0].id.videoId); //set the value in session
        var target = '<div class="slideYThumbnail"><img class="slideYThumbnailInside" src="http://img.youtube.com/vi/' + TsearchResultID + '/0.jpg"></img></div>';
    });
}); 
$(document).on('click', '.slideYThumbnail', function(event) {
    alert(sessionStorage.getItem('TsearchResultID')); //get the value from session
});