如果元素不包含表jquery,请单击该元素

时间:2015-12-11 21:06:25

标签: javascript jquery

var SELECTOR = 'span.title';
horseman
    .open(url)
    .evaluate(function(selector){
        var els = $(selector);
        $.each(els, function(i, el){
            var event = document.createEvent('MouseEvent');
            event.initEvent('click', true, true);
            el.dispatchEvent(event);
        });
    }, SELECTOR)
    .then(//other stuff)
    .finally(//other stuff

上面的代码点击了它在网站上找到的所有span.title元素。但是我只想点击包含其中某个元素的那些元素,例如表格,然后点击它,不知道该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

尝试使用.filter()



var selector = "span.title"

, not = function() {
  return !this.querySelectorAll("table").length
};

$(selector).filter(not).css("color", "green")

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<span class="title">
  <table><tbody><tr><td>table</td></tr></tbody></table>
</span>
<span class="title">not table</span>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

想出来!首先感谢@epascarello的建议!

唯一需要做的更改是var SELECTOR

现在看起来像这样

var SELECTOR = 'span.title:not(:has(table))';

这会查找每个span.title元素,但它包含一个表格,然后点击它。