Вы не можете выбирать псевдо элементы в jQuery, потому что они не являются частью DOM. Но вы можете добавить определенный класс к элементу отца и управлять его псевдоэлементами в CSS.
В jQuery:
В CSS:
span.change:after { content: 'bar' }
Я хотел последовать моему окончательному решению. Сначала нам нужно настроить определение OnSuccess свойства Ajax.BeginForm, чтобы оно выглядело следующим образом. Я попробовал несколько вариантов этого, но этот точный код - единственный, который работал.
@using (Ajax.BeginForm("AddUserRole", "AppRoles", null,
new AjaxOptions
{
HttpMethod = "Post",
OnBegin = "OnBegin",
OnFailure = "OnFailure(xhr, status)",
OnSuccess = "OnSuccess(data, status, xhr)"
},
new { id = "myform" }))
Далее javascript для OnSuccess выглядит следующим образом. Несколько вещей, чтобы отметить; Сначала контроллер, показанный ниже, может вернуть либо JsonResult, либо View / Model. Функция OnSuccess будет запущена независимо от того, какая из них будет возвращена, если HttpResponseStatus в порядке. Если контроллер возвращает представление / модель, то в параметре данных будет содержаться весь визуализированный вид, а нужный мне json будет в параметре XHR. Для работы с ответом json его нужно извлечь с помощью getResponseHeader и затем сериализовать в JSON. После этого мы можем работать с ним как с обычным старым объектом JSON.
function OnSuccess(data, status, xhr) {
console.log("OnSuccess");
// this is for capturing from the Response header WHEN the controller returns a view
var srchMessage = xhr.getResponseHeader("srchMessage")
if (srchMessage != null) {
var srchJson = JSON.parse(srchMessage);
console.log("srchMessage:param1" + srchJson.param1);
return;
}
// this is for capturing the json WHEN the controller returns a JsonResult
if (xhr.responseJSON != null) {
console.log("xhr.responseJSON.param1" + xhr.responseJSON.param1);
}
}
Контроллер MVC может возвращать либо «короткий» JsonResult, либо полный вид, выглядит примерно так
public ActionResult AjaxTest(AppModel model)
{
if (model.status == "ReturnView")
{
jsonMessage = new { param1 = "param1", param2 = "param2", param3 = "param3" };
string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(jsonMessage);
HttpContext.Response.AddHeader("srchMessage", jsonString);
HttpContext.Response.StatusCode = (int)HttpStatusCode.OK;
return View(model);
}
if (model.status == "ReturnJSON")
{
jsonMessage = new { param1 = "param1", param2 = "param2", param3 = "param3" };
HttpContext.Response.StatusCode = (int)HttpStatusCode.OK;
return Json(jsonMessage, JsonRequestBehavior.AllowGet);
}
}
Я не уверен, почему я хотел это сделать, У меня должны быть отдельные контроллеры для разных действий, но это то, как это можно сделать, если вы хотите это сделать.