Jquery在方法之间传递变量
找不到一个明确的答案来回答我想要实现的目标。我相信这很简单,但我很想念它 我将在一个页面上建立一个链接列表,所有链接都有“prettyLink”类,每个链接都有一个标题。在mouseover上,我试图将该标题存储在一个变量中并删除该标题,然后在mouseout上用存储的内容替换该标题。(基本上,鼠标悬停时删除标题,鼠标悬停时将其放回原处) 代码如下:Jquery在方法之间传递变量,jquery,Jquery,找不到一个明确的答案来回答我想要实现的目标。我相信这很简单,但我很想念它 我将在一个页面上建立一个链接列表,所有链接都有“prettyLink”类,每个链接都有一个标题。在mouseover上,我试图将该标题存储在一个变量中并删除该标题,然后在mouseout上用存储的内容替换该标题。(基本上,鼠标悬停时删除标题,鼠标悬停时将其放回原处) 代码如下: $('a.prettyLink').mouseover(function() { var oldTitle = this.title;
$('a.prettyLink').mouseover(function() {
var oldTitle = this.title;
$(this).removeAttr('title');
}).mouseout(function() {
$(this).attr('title',oldTitle);
});
感谢您的帮助。谢谢 只需在
mouseover()
方法之外声明变量:
var oldTitle;
$('a.prettyLink').mouseover(function() {
oldTitle = this.title;
$(this).removeAttr('title');
}).mouseout(function() {
$(this).attr('title',oldTitle);
});
在方法外部声明变量允许在方法内分配变量的值,并使新值在其他地方可用
var oldTitle;
$('a.prettyLink').mouseover(function() {
oldTitle = this.title;
$(this).removeAttr('title');
}).mouseout(function() {
$(this).attr('title',oldTitle);
});
应该可以工作。您需要在本地范围之外保存
oldTitle
。我喜欢使用jQuery的.data()
方法
$('a.prettyLink').mouseover(function() {
$(this).data('oldTitle', this.title);
$(this).removeAttr('title');
}).mouseout(function() {
$(this).attr('title',$(this).data('oldTitle'));
});
您可以尝试在页面上放置一个隐藏的
,它将保存该变量,并且您总是从该范围进行设置/获取
然后使用您的代码:
$('a.prettyLink').mouseover(function() {
var oldTitle = this.title;
$('#title').val(oldTitle);
$(this).removeAttr('title');
}).mouseout(function() {
$(this).attr('title',$('#title').val());
});
另一种方法是在您的页面中将oldTitle声明为全局,并以这种方式使用。您可以使用来存储信息并在以后检索它。考虑使用数据()
这样做的好处是将值与事件绑定到的元素一起存储,而声明的全局变量可能会被执行相同操作的其他元素的事件覆盖。如果使用悬停
事件:
var oldTitle;
$('a.prettyLink').hover(function() {
oldTitle = this.title;
$(this).removeAttr('title');
},function() {
$(this).attr('title',oldTitle);
});
这是因为mouseover
会多次触发,hover
只会进入一次(相当于mousenter
)
希望这有帮助。干杯这是我的解决方案
$(".swap").mouseover(function () {
var $img = $(this).find('img');
$(this).data('oldSrc', $img.attr('src'));
$img.attr("src", $img.data('alt-src'));
}).mouseout(function () {
var $img = $(this).find('img');
$img.attr("src", $(this).data('oldSrc'));
});
<div class='swap'><img src='mysrc' data-alt-src='new_src'/></div>
$(“.swap”).mouseover(函数(){
var$img=$(this.find('img');
$(this.data('oldSrc',$img.attr('src'));
$img.attr(“src”)、$img.data(“alt-src”);
}).mouseout(函数(){
var$img=$(this.find('img');
$img.attr(“src”,$(this.data(“oldSrc”);
});
Darn,你用完全相同的答案赢了我20秒+1@minitech:muahahahaaaaa。。。!咳嗽对不起=D+1表示内容:attr(title)代码>在jsFiddle的css中a:after
之后。我不知道你能做那件事。。。我可以选择多个答案吗??对不起,minitech=(如果有多个元素与选择器$('a.prettyLink')匹配,则此方法可能存在问题)
。如果其中两个在mouseout
事件触发之前触发mouseover
事件,其中一个将撞击另一个的oldTitle
值。我尝试在函数中使用数据,但它似乎仍然不起作用。即函数(数据){把它放在隐藏的输入中是最后的选择。如果我同意的话,我会尽量避免这样做,这只是另一种方法:)谢谢!!!漂亮干净,工作完美。谢谢大家的输入。