我使用Bootstrap创建标签内容。它在netsuite之外工作正常。但是一旦我将这个页面放入netsuite,它就会给我一个错误"Cannot assign to read only property 'preventDefault' of error"
我的页面是这样的
HTML:
<ul id="hireTab" class="nav nav-tabs" data-tabs="tabs">
<li class="active"><a href="#tabOne" data-toggle="tab">One</a>
<li class="active"><a href="#tabTwo" data-toggle="tab">Two</a>
<li class="active"><a href="#tabThree" data-toggle="tab">Three</a>
</ul>
<div class="tab-content">
<div id="tabOne" class="tab-pane active">
One, one one
</div>
<div id="tabTwo" class="tab-pane active">
Two, two two
</div>
<div id="tabThree" class="tab-pane active">
Three, three three
</div>
</div>
JS:
<script type="text/javascript">
jQuery(function() {
jQuery('#hireTab a').click(function(e) {
e.preventDefault();
jQuery(this).tab('show');
});
});
</script>
仔细看,我发现更改标签的工作正常。但是在选项卡更改后,preventDefault不会停止页面切换。
知道为什么会这样或任何解决方案?我是netsuite的新手,如果这个问题很愚蠢的话,请耐心等待。
更新:1小时的谷歌搜索引导我到这个页面。 http://backbonejs.org/#Router 所以看来骨干网正在劫持我的浏览器并改变了它的行为。
语法href =&#34; #xxx&#34;被骨干拦截并解释为&#34; HOME_URL / xxx&#34;。
现在的问题是当我不想弄乱骨干代码时如何阻止骨干这样做,而我不确定它将如何影响项目的其他部分。
答案 0 :(得分:0)
我的临时解决方案是event.stopPropagation()。
最终工作代码是:
<script type="text/javascript">
jQuery(function() {
jQuery('#hireTab a').click(function(e) {
e.preventDefault();
e.stopPropagation();
jQuery(this).tab('show');//Maybe this line is not needed
});
});
</script>
这个函数的作用是杀死请求并阻止它上升到DOM树。
描述:防止事件冒泡DOM树,防止任何父处理程序被通知事件。
这是一种残酷的做法。我相信有更优雅或原生的工作。