netsuite支持preventDefault()吗?

时间:2015-05-15 01:06:24

标签: javascript twitter-bootstrap backbone.js netsuite

我使用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;。

现在的问题是当我不想弄乱骨干代码时如何阻止骨干这样做,而我不确定它将如何影响项目的其他部分。

1 个答案:

答案 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树,防止任何父处理程序被通知事件。

这是一种残酷的做法。我相信有更优雅或原生的工作。