Jquery没有按预期更新属性

时间:2016-06-06 09:32:26

标签: javascript jquery asp.net-mvc

我有一个MVC应用程序,在我的一个页面上作为显示的一部分,我将根据用户选择的单选按钮呈现两个部分中的一个。这一切都运行正常,但我在主窗体上有一个按钮,我需要根据用户选择设置/重置将传递给我的控制器的值。该按钮在我的主表单上声明为:

@Html.GlobalModalAuthorizeButton("Upload Document", "Upload", "Documents", new { serviceUserId = Model.ServiceUser.Id, folderId = Model.CurrentFolderId, viewType = Model.ViewTypes.ToString() }, new { @class = "icon upload btn-primary" })

当最初呈现此页面时,viewtype被设置为用户最初呈现的默认视图。当用户更改视图时,viewtype似乎没有更新。因此,从已加载的部分我尝试将值设置为正确的值。如果我执行以下操作,请使用Chrome浏览器开发人员工具:

 $(this).parent().parent().parent().parent().find($('.upload')).attr('data-url').replace('FileView', 'TreeView');

它在控制台窗口中返回我想要的值(想法是我在用户按下它之前在按钮上设置值)。问题是以上并没有真正改变按钮上的data-url属性,因此当控制器被击中时,' FileView'仍然通过。

2 个答案:

答案 0 :(得分:2)

对于完整属性:

var new_attr = "/ServiceUser/Documents/Upload?serviceUserId=21&viewType=FileView";

$(this).parent().parent().parent().parent().find($('.upload')).attr('data-url', new_attr); 

或者,正如@Rup已经建议的那样,您应首先获取原始属性值,使用replace方法修改它,然后重新分配new_attr。

答案 1 :(得分:2)

jQuery有一个特殊的方法来读写数据属性:

var selectedImages = document.querySelectorAll( "img:not([src*='abs.twimg.com'])" );