0

我正在从一个工作得很好的文件中渲染 dom。然后我使用带有点击事件的 jQuery 操作 dom。

我的问题是:我现在如何从后面的代码中获取被操纵的元素?

$(document).ready(function() {
  var x = $(".class");

  x.on("click", function() {
    $(this).addClass("editable");
  });
});
public static string filePath = HttpContext.Current.Request.PhysicalApplicationPath;
public static string file = filePath + "/templates/index.html";
public CQ dom = CQ.CreateFromFile(file);

protected void Page_Load(object sender, EventArgs e)
{
    var html = dom.Render();
    if (!IsPostBack)
    {
        Response.Write(html);
    }
}

protected void btnSave_OnClick(object sender, EventArgs e)
{
  var editable = dom.Select(".simplecms.editable").Text();
// Obviously this string will contain the value from the original dom, how can I retrieve the manipulated dom here?
}

4

1 回答 1

0

一旦代码在浏览器中生效,它将不再(必然)反映文件中的结构。浏览器偶尔会在其 DOM 模型中添加额外的标签以进行规范化,甚至在您从 jQuery 操作任何内容之前也是如此。因此,您不应该期望能够从文件系统中检索它。

在这一点上,任何问题的标准答案都可以归结为“我如何在运行时从我的网页获取(任何类型的)数据到我的服务器?” 是在您的服务器上实现一个 REST 接口并使用 AJAX 将您需要的任何数据发送到服务器。jQuery 有一个很棒的 AJAX 接口,你可以很容易地做类似的事情$(body).html()或者$('.some#selector').html()得到一个字符串表示来发送到你的服务器。根据您的服务器设置,棘手的部分可能是设置 REST 接口,但这有点超出了这个问题的范围。从 REST 端点接收到字符串后,您应该能够使用CQ.Create(htmlString)为 CsQuery 生成 DOM。

于 2016-04-29T12:51:01.563 回答