欢迎各位兄弟 发布技术文章
这里的技术是共享的
http://drupal.org/node/331941#comment-1503260
关于调用了AHAH之后,新出来的button会丢失绑定JS效果,可以参考诗人的回答
drupal6 表单如何在某个元素使用ahah,并在这个表单元素中使用了自己编写的js特效?
=============================================================
最近做项目的时候,碰到这样的问题,我需要一个fieldset,里面有个ahah的add more filedset按钮,点击之后会在当前的fieldset之后再创建一个包含了ahah的add more filedset按钮的新fieldset。而这个时候,新的add more会丢失ahah功能。(其实这个功能很像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function ahah_render( $element ){ $ahah_binding = array ( 'url' => url( $element [ '#ahah' ][ 'path' ]), 'event' => $element [ '#ahah' ][ 'event' ], 'keypress' => empty ( $element [ '#ahah' ][ 'keypress' ]) ? NULL : $element [ '#ahah' ][ 'keypress' ], 'wrapper' => empty ( $element [ '#ahah' ][ 'wrapper' ]) ? NULL : $element [ '#ahah' ][ 'wrapper' ], 'selector' => empty ( $element [ '#ahah' ][ 'selector' ]) ? '#' . $element [ '#id' ] : $element [ '#ahah' ][ 'selector' ], 'effect' => empty ( $element [ '#ahah' ][ 'effect' ]) ? 'none' : $element [ '#ahah' ][ 'effect' ], 'method' => empty ( $element [ '#ahah' ][ 'method' ]) ? 'replace' : $element [ '#ahah' ][ 'method' ], 'progress' => empty ( $element [ '#ahah' ][ 'progress' ]) ? array ( 'type' => 'throbber' ) : $element [ '#ahah' ][ 'progress' ], 'button' => isset( $element [ '#executes_submit_callback' ]) ? array ( $element [ '#name' ] => $element [ '#value' ]) : FALSE, ); return array ( $element [ '#id' ] => $ahah_binding ); } |
3. $ahah_settings = ahah_render(我的fieldset的array)
4.在$output = theme ( 'status_messages' ) . drupal_render ( $subform );之后,添加
1 | $output .= '<script type="text/javascript">jQuery.extend(Drupal.settings.ahah, ' . drupal_to_js( $ahah_settings ) . ');</script>' ; |
原因 :ahah的绑定,需要提供Drupal.settings.ahah, 而这个settings在页面生成时就已经加载完毕, 所以ahah的callback里,我们需要在render了这个element之后加入内嵌的js去给上settings,同时,因为ahah需要提供element的id,所以要在加入新元素后,重新build一下我们的内容
来自 http://www.drupalla.com/node/1391