我搜索了stackoverflow,并且有一些关于这个问题的主题,但不完全是我正在寻找的。我正在使用的wordpress主题最近更新,现在在他们的main.js中有这个 - 折叠数据-api:
$(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
var $this = $(this), href;
var target = $this.attr('data-target')
|| e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, ''); //strip for ie7
var $target = $(target);
var data = $target.data('bs.collapse');
var option = data ? 'toggle' : $this.data();
var parent = $this.attr('data-parent');
var $parent = parent && $(parent);
if (!data || !data.transitioning) {
if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed');
$this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed');
}
$target.collapse(option);
});
问题是,行e.preventDefault()
阻止了页面下拉菜单中的链接打开了链接到的内容部分(页面上有#divs,点击后会显示 - display:none
- > display:block;
)
无论如何,我的问题是 - 我可以为整个页面启用默认操作吗?我只需要这个特定的页面,我不能更改main.js代码,因为它会影响其他页面。我找到的所有解决方案都是关于使用onclick
返回true,但是我想在页面内容中放置一个<script>...</script>
,这样就可以启用此页面的默认操作 - 像负载或其他东西。如果它甚至可能或者必须连接到事件?对不起,我不是JavaScript程序员,我只需要修复更新搞砸的内容..
感谢您的任何建议
答案 0 :(得分:0)
根据您提供的代码,e.preventDefault()
仅在相关[data-toggle=collapse]
元素没有data-target
属性时才会被点击:
var target = $this.attr('data-target')
|| e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '');
这是做什么的:
$this.attr('data-target')
的值分配给target
变量。data-target
属性,请将其设置为调用e.preventDefault()
的结果。e.preventDefault()
始终没有返回任何内容,请将其设置为元素href
,替换几位。如果您的元素具有e.preventDefault()
属性,则不会点击data-target
:
<div data-target="..." data-toggle=collapse></div>