欢迎各位兄弟 发布技术文章
这里的技术是共享的
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