Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery在方法之间传递变量_Jquery - Fatal编程技术网

Jquery在方法之间传递变量

Jquery在方法之间传递变量,jquery,Jquery,找不到一个明确的答案来回答我想要实现的目标。我相信这很简单,但我很想念它 我将在一个页面上建立一个链接列表,所有链接都有“prettyLink”类,每个链接都有一个标题。在mouseover上,我试图将该标题存储在一个变量中并删除该标题,然后在mouseout上用存储的内容替换该标题。(基本上,鼠标悬停时删除标题,鼠标悬停时将其放回原处) 代码如下: $('a.prettyLink').mouseover(function() { var oldTitle = this.title;

找不到一个明确的答案来回答我想要实现的目标。我相信这很简单,但我很想念它

我将在一个页面上建立一个链接列表,所有链接都有“prettyLink”类,每个链接都有一个标题。在mouseover上,我试图将该标题存储在一个变量中并删除该标题,然后在mouseout上用存储的内容替换该标题。(基本上,鼠标悬停时删除标题,鼠标悬停时将其放回原处)

代码如下:

$('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
值。我尝试在函数中使用数据,但它似乎仍然不起作用。即函数(数据){把它放在隐藏的输入中是最后的选择。如果我同意的话,我会尽量避免这样做,这只是另一种方法:)谢谢!!!漂亮干净,工作完美。谢谢大家的输入。