Vtiger - Jquery slideToggle 随机切换两次
Vtiger - Jquery slideToggle randomly toggles twice
我在帐户模块的摘要视图中制作了一个小部件。在这个小部件中,我想使用 slideToggle 来显示一些细节。有时代码运行完美,但有时它会双重切换并立即关闭细节。
JS:
$(document).ready(function() {
$('.potential_single_title').on('click',function(e) {
$(this).parent().find('.potential_comment_list').slideToggle('slow');
});
});
TPL:
<script src="resources/ChildCommentScript.js"></script>
<link rel="stylesheet" type="text/css" href="resources/ChildCommentStyle.css">
{strip}
<div class="potential_comment_container">
{foreach from=$OPP key=K item=POT}
<br />
<div class="potential_single">
<div class="potential_single_title">
<strong>{$POT[1]}</strong> <span class="potential_assignee">Assigned to : {$POT[2]}</span>
</div>
<hr>
<div class="potential_comment_list">
<div class="commentContainer">
{foreach from=$COM[$K] item=POTCOM}
<div class="commentDetails" style="width:100%;">
<div class="span1">
<img class="alignMiddle pull-left" src="layouts/vlayout/skins/images/DefaultUserIcon.png">
</div>
<span class="commentorName"><strong> {$POTCOM[0]}</strong></span>
<span class="pull-right"><p class="muted"><small>{$POTCOM[1]}</small></p></span>
<div class="commentInfoContent">{$POTCOM[2]}</div>
</div>
{/foreach}
</div>
</div>
</div>
{/foreach}
</div>
{/strip}
滑动切换的用法似乎是正确的。我怀疑点击有时会发生两次,这会再次导致滑动。
修改 JS 以在发生滑动操作时拒绝点击可能会解决此问题。
$(document).ready(function() {
var sliding = false;
$('.potential_single_title').on('click',function(e) {
if(sliding) return false;
sliding = true;
$(this).parent().find('.potential_comment_list').slideToggle('slow', function() {sliding = false;});
});
});
包含用于在滑动时拒绝点击操作的简单标志!
这只是为了展示如何查看点击是否发生了两次。
$(document).ready(function() {
$('.potential_single_title').on('click',function(e) {
console.log("clicked")
});
});
一次点击..如果在控制台中你看到点击了两次,你可以假设你的触发器是快乐的;-)
尝试在其中放置一个调试器...可能会突出显示内容
$(document).ready(function() {
$('.potential_single_title').on('click',function(e) {
console.log("clicked");
debugger;
});
});
在 chrome 中,调试器控制台必须打开才能命中调试器行。
只是想排除愚蠢的事情..这是页面上没有其他 js 的一对一...就像您的包装 $(document).ready( 两次或其他东西,只是没有包含该代码在问题中?
我在帐户模块的摘要视图中制作了一个小部件。在这个小部件中,我想使用 slideToggle 来显示一些细节。有时代码运行完美,但有时它会双重切换并立即关闭细节。
JS:
$(document).ready(function() {
$('.potential_single_title').on('click',function(e) {
$(this).parent().find('.potential_comment_list').slideToggle('slow');
});
});
TPL:
<script src="resources/ChildCommentScript.js"></script>
<link rel="stylesheet" type="text/css" href="resources/ChildCommentStyle.css">
{strip}
<div class="potential_comment_container">
{foreach from=$OPP key=K item=POT}
<br />
<div class="potential_single">
<div class="potential_single_title">
<strong>{$POT[1]}</strong> <span class="potential_assignee">Assigned to : {$POT[2]}</span>
</div>
<hr>
<div class="potential_comment_list">
<div class="commentContainer">
{foreach from=$COM[$K] item=POTCOM}
<div class="commentDetails" style="width:100%;">
<div class="span1">
<img class="alignMiddle pull-left" src="layouts/vlayout/skins/images/DefaultUserIcon.png">
</div>
<span class="commentorName"><strong> {$POTCOM[0]}</strong></span>
<span class="pull-right"><p class="muted"><small>{$POTCOM[1]}</small></p></span>
<div class="commentInfoContent">{$POTCOM[2]}</div>
</div>
{/foreach}
</div>
</div>
</div>
{/foreach}
</div>
{/strip}
滑动切换的用法似乎是正确的。我怀疑点击有时会发生两次,这会再次导致滑动。 修改 JS 以在发生滑动操作时拒绝点击可能会解决此问题。
$(document).ready(function() {
var sliding = false;
$('.potential_single_title').on('click',function(e) {
if(sliding) return false;
sliding = true;
$(this).parent().find('.potential_comment_list').slideToggle('slow', function() {sliding = false;});
});
});
包含用于在滑动时拒绝点击操作的简单标志!
这只是为了展示如何查看点击是否发生了两次。
$(document).ready(function() {
$('.potential_single_title').on('click',function(e) {
console.log("clicked")
});
});
一次点击..如果在控制台中你看到点击了两次,你可以假设你的触发器是快乐的;-)
尝试在其中放置一个调试器...可能会突出显示内容
$(document).ready(function() {
$('.potential_single_title').on('click',function(e) {
console.log("clicked");
debugger;
});
});
在 chrome 中,调试器控制台必须打开才能命中调试器行。
只是想排除愚蠢的事情..这是页面上没有其他 js 的一对一...就像您的包装 $(document).ready( 两次或其他东西,只是没有包含该代码在问题中?