0

对于 CakePHP 2.x 使用 JsHelper,对于每个回调函数,是否有可能让多个选择器受到各种影响。例如,我正在使用:

echo $this->Js->submit('thumbs-up-green.jpg', array(
  'id' => 'thumbs-up-green',
  'before' => $this->Js->get('#thumbs-down-red')->effect('fadeOut'),
  'success' => $this->Js->get('#thumbs-down-gray')->effect('fadeIn')
));

假设我也想在 before 回调函数中对 #thumbs-down-gray 应用效果除了我目前拥有的 #thumbs-down-red 效果),它的语法是什么?我一直在四处寻找,但 JsHelper 的文档有限。

另外一个更简单的问题,JsHelper 提交按钮/表单似乎执行换行,即使 CSS display:none; 活跃。我如何摆脱那个换行符?

4

2 回答 2

1

我还没有找到一个非常简洁的 JsHelper 解决方案,我认为我无法链接其他元素和操作。

所以我认为对于更复杂的回调函数,解决方案是执行一个预加载的函数,如:

'before' => 'someFunction();',

但是,如果你只想一次性淡出多个元素,那么你可以这样写:

'before' => $this->Js->get('#thumbs-down-red, #other-element')->effect('fadeOut'),
于 2012-09-03T15:04:56.683 回答
1

您必须在实际提交调用之前在变量中设置“之前”操作。像这样:

$before = $this->Js->get('#skadetyp_form')->effect('fadeOut', array('buffer' => false));
$before .= '$(\'#notice\').append(\'<div class="notice">Sending..<br/>' . $this->Html->image('load_bar.gif', array('alt' => 'Loading..')) . '</div>\')';
$complete = $this->Js->get('#notice div')->effect('fadeOut', array('buffer' => false));
$complete .= '$(\'#notice\').append(\'<div class="success">Succssfully seny!</div>\')';

echo $this->Js->submit('Send!',
        array(
            'update'=>'#skadetyp_form',
            'complete' => $complete,
            'before' => $before,
            'error' => $error,
            'async' => true,
            'method' => 'post',
            'dataExpression'=>true,
            'data'=> $this->Js->serializeForm(
                array(
                    'isForm' => true,
                    'inline' => true
                )
            )
        )
);
于 2013-01-16T21:14:20.480 回答