Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Javascript jQuery';s单击/quot;松开“;?_Javascript_Jquery - Fatal编程技术网

Javascript jQuery';s单击/quot;松开“;?

Javascript jQuery';s单击/quot;松开“;?,javascript,jquery,Javascript,Jquery,我目前正在为我朋友的网站开发导航。我使用事件绑定,如下所示: $(document).on('click', '.title-container h1 a, .img-container a', function() { showPosts(); return false; }); $(document).on('click', '.title-container h1 a, .img-container a', function () { $(this).data

我目前正在为我朋友的网站开发导航。我使用事件绑定,如下所示:

$(document).on('click', '.title-container h1 a, .img-container a', function() {
    showPosts();

    return false;
});
$(document).on('click', '.title-container h1 a, .img-container a', function () {  
   $(this).data('clicked', !$(this).data('clicked'));     
   $(this).data('clicked') ?  showPosts() : unShowPosts(); 
});
我需要的是一个jQuery函数或一些可以撤消前面的
单击
的函数。我试图避免使用这两次,我在想-是否有类似于
悬停
(有两个参数)的东西可以用于此

长话短说-我只想为
点击

showPosts()
正在使用
$加载帖子。获取
。我想要的:当我再次点击这篇文章时,我想启动
unShowPosts()
函数


我希望这能以某种方式澄清它。很抱歉,我的英语似乎很差。

您只需在单击时使用:
.off(…)
设置活动,然后注册一个新的活动,它将调用您的其他功能

详情见:

请参见此处的行为:

尝试使用
.data()
这样的用法:

$(document).on('click', '.title-container h1 a, .img-container a', function() {
    showPosts();

    return false;
});
$(document).on('click', '.title-container h1 a, .img-container a', function () {  
   $(this).data('clicked', !$(this).data('clicked'));     
   $(this).data('clicked') ?  showPosts() : unShowPosts(); 
});
比如:

var hidden = true
$(document).on('click', '.title-container h1 a, .img-container a', function() {
    hidden = !hidden ? hidePosts() : showPosts()
});

你说的撤销是什么意思?你是说你只想让事件触发一次?如果是这样,请使用
one()
您可以在
showPosts
中使用
toggle
,方法是撤销。如果您的意思是隐藏帖子,那么您可以像@abhitalks所说的那样使用toggle。如果您希望在帖子已经显示的情况下单击不执行,那么您需要在显示之前根据您的结构检查它们的可见性,或者它们是否具有某些类,甚至它们是否存在。这里曾经是一个事件,但在v1.8中被弃用(在v1.9中删除),这将使事件只工作一次,那就不行了。@DontVoteMeDown,这就是要求的。。。看:“我试图避免两次使用这个”我试图避免的是使用
点击
两次。你的解决方案毕竟不是我想要的。@TomekBuszewski你想禁用你的链接吗?是的,你说的很有道理。问题太不清楚了。但是,
unShowPosts()
将始终被调用,因为您在第一次单击后检查它之前设置了
.data()
,然后,
$(this).data('clicked')!='单击的“
将始终为
false
。它可以改为:
$(document).on('click','title container h1 a,.img container a',function(){$(this).data('clicked',!$(this.data('clicked'));$(this.data('clicked')?showPosts():unShowPosts();})
@A.Wolff我真的对
.data()
的使用感到困惑。…@A.Wolff:根据Op的最新评论,你的第二条评论似乎是“答案”。@Jai我在玩愤怒的小鸟,这是我的训练…;)但这并不是特定于已单击的元素,也不是特定于未编辑的元素,但也可能是它,这取决于预期的行为