csQuery从操作dom中选择元素?

时间:2016-04-29 12:43:53

标签: jquery dom csquery

我正在从一个工作得很好的文件渲染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?
}

1 个答案:

答案 0 :(得分:0)

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

此时的标准答案是任何可以归结为问题的问题,例如,如何在运行时从我的网页到我的服务器获取数据(任何类型)?"是在服务器上实现REST接口,并使用AJAX将所需的任何数据发送到服务器。 jQuery有a great AJAX interface,您可以轻松地执行$(body).html()$('.some#selector').html()之类的操作来获取要发送到服务器的字符串表示形式。根据您的服务器设置,棘手的部分可能是设置REST接口,但这有点超出了这个问题的范围。从REST端点收到字符串后,您应该可以使用CQ.Create(htmlString)为CsQuery生成DOM。