如何在Ajax上更新数据属性

时间:2016-02-28 04:41:49

标签: javascript jquery ajax octobercms

我使用的是十月CMS,在框架中我可以使用以下HTML元素进行AJAX调用:

<a href="#" class="sbutton" data-request="onSavedeal" 
     data-request-data="deal_ID:'14779255',type:'local',active:'0'">
    <i class="material-icons pink-text listfavorite">favorite</i>                      
</a>

每当点击收藏夹按钮时,就会触发对控制器的更新&#34; onSavedeal&#34;。第一次单击时更新数据库工作正常。但是,在更新之后,&#34;数据请求数据的值为#34;属性未更新,因此该按钮不适用于后续点击。

我需要更改链接,以便&#34;有效:&#39; 0&#39;&#34;成为&#34;活跃的:&#39; 1&#39;&#34;。得到的完整元素将是

<a href="#" class="sbutton" data-request="onSavedeal" 
     data-request-data="deal_ID:'14779255',type:'local',active:'1'">
    <i class="material-icons pink-text listfavorite">favorite</i>                      
</a>

在框架中,我可以添加另一个名为&#34; data-request-success&#34;执行一个javascript函数(或代码)成功完成AJAX调用。我怎样才能创建一个名为&#34; updateactive()&#34;这将在0和1之间切换活动值。最终元素应如下所示:

<a href="#" class="sbutton" data-request="onSavedeal" 
     data-request-data="deal_ID:'14779255',type:'local',active:'0'"
     data-reuqest-success="updateactive();">
    <i class="material-icons pink-text listfavorite">favorite</i>                      
</a>

2 个答案:

答案 0 :(得分:1)

如果您可以安全地按属性a识别具有值data-request的{​​{1}}元素,则可以按如下方式编写onSavedeal函数:

updateactive

不要忘记将function updateactive() { var newAttrValue = "deal_ID:'14779255',type:'local',active:'1'"; $('[data-request="onSavedeal"]').attr('data-request-data', newAttrValue); } 更改为data-reuqest-success

<强>更新 如果页面上有许多data-request-success元素,则可以重复使用如下所示的相同功能。查看演示 - Fiddle

a

答案 1 :(得分:0)

以这种方式更改锚标记

<a href="#" class="sbutton" data-request="onSavedeal" 
 data-request-data="deal_ID:'14779255',type:'local',active:'0'"
 data-reuqest-success="updateactive(this);">
<i class="material-icons pink-text listfavorite">favorite</i>                      

请注意更改updateactive(this);

然后在你的jquery中,你可以通过这种方式获得函数定义。

 function updateactive(element) {        
    $(element).attr('data-request-data', $(element).attr('data-request-data').replace("active:'0'", "active:'1'"));
}