Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

public static IEnumerable<IHtmlElement> Elements(this IHtmlContainer container, string selector) 不能识别选择器中的逗号语法 #10

Open
qaqz111 opened this issue Feb 10, 2016 · 2 comments

Comments

@qaqz111
Copy link

qaqz111 commented Feb 10, 2016

private void Button_Click_14(object sender, RoutedEventArgs e)
{
    var html =
        "<body>" +
            "<div>" +
                "<p><a id='1'>111</a></p>" +
                "<span><a id='2'>222</a></span>" +
                "<h><a id='3'>333</a></h>" +
            "</div>" +
            "this is text" +
            "<span>" +
                "<p><a id='4'>444</a></p>" +
                "<span><a id='5'>555</a></span>" +
                "<h><a id='6'>666</a></h>" +
            "</span>" +
        "</body>" +
        string.Empty;
    var doc = html.ParseAsHtml();
    var root = doc.Elements().First();
    var e1 = root.Elements();
    var e2 = root.Nodes();

    var e3 = root.Elements("div,span"); //只返回第一个div#div1
    //期望的行为同时是返回 div#div1 和 span#span1
    //这个期望行为与 jquery 的 $('body').children('div,span') 一致

    var e32 = root.Elements("span,div"); //只返回第一个span#span1

    var e4 = root.Find("div,span"); //正常
    var e42 = root.Find("span,div"); //正常,与e4结果一致
}

另外选择器的支持貌似还不全面,:root 和 :has 伪类就不受支持,doc.Find(":root") 会抛出异常提示“无法识别的伪类 root”,最麻烦的是 :no(selector) 伪类不支持。其他的伪类也有很多都不支持,下面链接页面中的伪类和其他选择器语法都有不支持的:

http://www.runoob.com/jquery/jquery-ref-selectors.html

@Ivony
Copy link
Owner

Ivony commented Feb 11, 2016

Element方法的选择器语法只支持元素选择器(element selector或者说简单选择器simple selector),也就是不包含combinator的选择器语法。

也就是说不支持逗号。

目前选择器只支持到CSS Selector Level 3,后面版本的选择器并不支持,jQuery自己发明的选择器也不支持。

当然所有的一切都是开放的,你可以自行定义伪类编写代码支持。

@qaqz111
Copy link
Author

qaqz111 commented Feb 23, 2016

好吧,不过同一个库中用途相似的两个方法对选择器的支持度不一致有些费解,而且看来也没有改进Element方法向Find看齐的计划,暂时只能用别的方式代替了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants