Struts 2 jQuery插件具有内置的publish/ subscribe框架。
publish
subscribe
如果您定义自己的发布和订阅事件(例如在网格上),则每次事件发布时都会调用订阅函数
为了防止这种情况,isSubscribed可以使用一种方法。
isSubscribed
对于网格为:
<sjg:grid id="gridtable" onBeforeTopics="before_grid_load" >
JS将是:
$.subscribe('before_grid_load', function(event, data) { if ( $('#gridtable').isSubscribed('before_grid_load') ){ return ; } //go on with function }
问题是每次都有$('#gridtable').isSubscribed('before_grid_load')回报false!
$('#gridtable').isSubscribed('before_grid_load')
false
该函数isSubscribed应用于元素,$('#gridtable')但已订阅$(document)。我已经测试了最后一个元素,但对我没有用。但是尝试了第一个元素,它起作用了。
$('#gridtable')
$(document)
脚本:
<head> <link href="<s:url value="/css/template_styles.css"/>" type="text/css" rel="stylesheet"> <sj:head /> <title>jQuery Grid</title> <script type="text/javascript"> $(document).ready(function(){ console.log("Before subscribe"); $("#gridtable").subscribe("beforeTopic", function(topic, data) { console.log('Topic: '+data, topic); if ( $("#gridtable").isSubscribed("beforeTopic") ){ console.log('Subscribed: '+data, topic); return; } //go on with function console.log('Not subscribed: '+data, topic); }); console.log("After subscribe"); }); </script> </head>
对于网格:
<sjg:grid id="gridtable" onBeforeTopics="beforeTopic" >