Ana*_*ath 5 jquery renderpartial yii
我知道这个问题已被多次询问,无论是在这里还是在Yii网站上,但即使在完成每个解决方案之后我也无法获得解决方案.我确信我做的事情从根本上是错误的.所以如果你还在读这个 - 这里什么都没有,
我有一个页面,其中加载了CheckBoxList小部件.它有一个change()jQuery函数调用,刷新一个完美运行的CGridView.我还有一个与checkBoxList中具有click事件的每个项相关的span.
此单击事件依次调用"部分呈现"视图的控制器 -
Yii::app()->clientscript->scriptMap['jquery.js'] = false;
$this->widget('ext.xxx.EModelWidget', array(
'name' => $widget_name,
'manufacturer_id' => $manufacturer_id,
)
);
Run Code Online (Sandbox Code Playgroud)
并且相应的窗口小部件代码在从db获取$ data之后打印CheckBoxList.
echo CHtml::checkBoxList($this->name, array(), $data, array(
'class' => 'modelFilter',
'separator' => '',
'template' => '<div>{input} {label}</div>',
'id' => 'dummyID',
));
Run Code Online (Sandbox Code Playgroud)
如您所见,我已将每个将呈现为复选框的元素的类名设置为modelFilter
现在我在主视图文件中有一个脚本,只需在单击类modelFilter的checkBox时显示一个警告框.
Yii::app()->clientScript->registerScript('model-selected', "
$('input.modelFilter').change(function(){
alert('Hellpo!');
});
");
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这种情况从未发生过.
我在所有论坛中阅读的两个常见解决方案是
a)Yii :: app() - > clientscript-> scriptMap ['jquery.js'] = false; 你可以看到我已经适时跟随.
b)renderPartial的$ result和$ processOutput参数分别为false和true.,这也是我所遵循的.
所以我的问题是我应该怎么做才能获得通过Ajax工作加载的内容的更改功能,在Yii!
如果我理解正确,您$('input.modelFilter').change()在加载复选框列表之前调用.像这样使用事件处理程序将不会绑定到调用后插入的任何元素.
您必须使用委派事件而不是直接绑定事件.请查看:http://api.jquery.com/on/(搜索"直接和委派活动")
$("body_or_input_container").on("change", "input.modelFilter", function(e){
//callback
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12819 次 |
| 最近记录: |