使用后退按钮上的pjax重新初始化javascript

时间:2017-03-29 09:11:11

标签: javascript ajax pjax

以下"完成"单击按钮时回调效果很好。但是使用浏览器后退按钮,不会再次调用完成的回调。

$.pjax({
        url: $this.attr("href"), 
        container: '#div-section', 
        push: true
}).done(function() {
        $object.init();                 
});

是否还有另一种方法可以在pjax结束时触发其他javascripts而不是完成(因为它不起作用)?

1 个答案:

答案 0 :(得分:0)

找到解决方案,但我猜在页面中只有一个这样的处理程序 -

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))

np.random.seed(1000)
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
print(df)
first        bar                 baz                 foo                 qux  \
second       one       two       one       two       one       two       one   
A      -0.804458  0.320932 -0.025483  0.644324 -0.300797  0.389475 -0.107437   
B       0.595036 -0.464668  0.667281 -0.806116 -1.196070 -0.405960 -0.182377   
C      -0.138422  0.705692  1.271795 -0.986747 -0.334835 -0.099482  0.407192   

first             
second       two  
A      -0.479983  
B       0.103193  
C       0.919388  

df = pd.concat([df.mean(), df.std()], keys=('mean','std')).unstack(1)
df.index =  [[0] * len(df.index), ['_'.join((col[1], col[0])) for col in df.index]]
df = df.unstack()
print (df)
first       bar                                     baz                      \
       one_mean   one_std  two_mean   two_std  one_mean   one_std  two_mean   
0     -0.115948  0.700018  0.187319  0.596511  0.637865  0.649139 -0.382846   

first                 foo                                     qux           \
        two_std  one_mean   one_std  two_mean   two_std  one_mean  one_std   
0      0.894129 -0.610567  0.507346 -0.038656  0.401191  0.039126  0.32095   

first                      
       two_mean   two_std  
0      0.180866  0.702911  

编辑

上述解决方案导致pjax调用的双重绑定,一旦进入pjax:成功,然后第二次进入完成事件回调。要在后面/前面或pjax上只执行一个绑定,我们可以执行以下操作。在这种情况下,可以使用globalEventDirection在pjax中有条件地绑定:成功将init保留为完成,以防单击按钮。但是使用后退和前进按钮,init将在pjax:success

中完成
$(document).on("ready pjax:success", function(){
        //initialize all javascripts here
});