在javascript中将变量传递给其他函数
如何将默认值传递给下面的mouseleave函数?在javascript中将变量传递给其他函数,javascript,jquery,Javascript,Jquery,如何将默认值传递给下面的mouseleave函数? 感谢您的帮助:)一个选项是在两个函数之外声明一个变量 $('.header_menu_item').on('mouseenter',function(){ var default_img = $(this).find('.header_menu_item_icon_img').attr('src'); var hover_img = $(this).find('.header_menu_item_icon_img').attr(
感谢您的帮助:)一个选项是在两个函数之外声明一个变量
$('.header_menu_item').on('mouseenter',function(){
var default_img = $(this).find('.header_menu_item_icon_img').attr('src');
var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
$(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
$(this).find('.header_menu_item_icon_img').prop('src',default_img);
});
一个选项是在两个函数之外声明一个变量
$('.header_menu_item').on('mouseenter',function(){
var default_img = $(this).find('.header_menu_item_icon_img').attr('src');
var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
$(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
$(this).find('.header_menu_item_icon_img').prop('src',default_img);
});
将其设置为元素本身的数据,然后稍后检索
var default_img = '';
$('.header_menu_item').on('mouseenter',function(){
default_img = $(this).find('.header_menu_item_icon_img').attr('src');
var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
$(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
$(this).find('.header_menu_item_icon_img').prop('src',default_img);
});
通过原生js
//setting
$(this).data('default_img',default_img);
//retrieving
var img = $(this).data('default_img');
您还可以在html本身上设置data-*属性,这样就不需要使用JS来设置初始数据
//setting
this.dataset['default_img'] = default_img;
//retrieving
var img = this.dataset['default_img'];
将其设置为元素本身的数据,然后稍后检索
var default_img = '';
$('.header_menu_item').on('mouseenter',function(){
default_img = $(this).find('.header_menu_item_icon_img').attr('src');
var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
$(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
$(this).find('.header_menu_item_icon_img').prop('src',default_img);
});
通过原生js
//setting
$(this).data('default_img',default_img);
//retrieving
var img = $(this).data('default_img');
您还可以在html本身上设置data-*属性,这样就不需要使用JS来设置初始数据
//setting
this.dataset['default_img'] = default_img;
//retrieving
var img = this.dataset['default_img'];
您需要使用全局变量。函数只能将变量直接传递给它调用的函数,而不能传递给外部调用的函数
<img src="http://example.com/someimg.jpg" data-default_img="http://example.com/someimg.jpg" />
您需要使用全局变量。函数只能将变量直接传递给它调用的函数,而不能传递给外部调用的函数
<img src="http://example.com/someimg.jpg" data-default_img="http://example.com/someimg.jpg" />
您不能直接传递它-您可以将其存储在外部变量中-但必须按每个项目进行传递:
var default_img;
$('.header_menu_item').on('mouseenter',function(){
default_img = $(this).find('.header_menu_item_icon_img').attr('src');
var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
$(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
$(this).find('.header_menu_item_icon_img').prop('src',default_img);
});
您不能直接传递它-您可以将其存储在外部变量中-但必须按每个项目进行传递:
var default_img;
$('.header_menu_item').on('mouseenter',function(){
default_img = $(this).find('.header_menu_item_icon_img').attr('src');
var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
$(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
$(this).find('.header_menu_item_icon_img').prop('src',default_img);
});
如果您输入两个$('.header\u menu\u item'),但只保留其中一个,则默认的\u img可能会有所不同,您必须按每个header\u菜单存储默认的\u img_item@ThomasFellinger除非它们是嵌套的,我怀疑这种情况会发生。我认为它们只是需要以某种方式重叠放置以获得失败。我们需要查看HTML以了解这是否重要。如果输入两个$('.header\u menu item'),则默认值可能有所不同,但只留下其中一个,您必须按每个header\u menu存储默认值_item@ThomasFellinger除非它们是嵌套的,我怀疑会发生这种情况。我认为它们只是需要以某种方式重叠放置以获得失败。我们需要查看HTML以了解这是否重要。只有用户希望在
mouseleave
函数中传递default\u img
变量。。为什么需要每个功能??因为每个菜单项的默认值可能不同,并且可以并且将在全局变量中被覆盖,所以只有用户希望在mouseleave
函数中传递default\u img
变量。。为什么需要每个功能??因为每个菜单项的默认值会有所不同,并且会在全局变量中被覆盖