类型'()=>的参数JQuery的'不能分配给'()=>类型的参数布尔'

时间:2017-08-19 02:11:34

标签: javascript jquery html angularjs jasmine

我正在尝试为我的方法编写一个jasmine测试用例,但我遇到了一个错误:

  

spec.ts(163,18):错误TS2345:类型的参数'()=> JQuery的'不能分配给'()=>类型的参数布尔&#39 ;.

你们能告诉我如何解决这个问题吗?提供我的代码和测试用例

$('.triggerKPopUpClick').click(function() {
    if ($('#financialDocumentsGrid').data("kendoGrid")) {
        $('#financialDocumentsGrid').data("kendoGrid").dataSource.data([])
    }
    that.ContractInfoPopUpWindow.data("kendoWindow").close();
    $("html, body").css("overflow", "");
});

it('triggerKPopUpClick in head', function() {
    $('.triggerKPopUpClick').trigger('click');

    waitsFor(function() {
        return $('financialDocumentsGrid').contains('financialDocumentsGrid');
    }, 'theme switcher never loaded', 10000);
});

1 个答案:

答案 0 :(得分:0)

.contains()方法检查元素是否是另一个元素的后代。

语法为$.contains(parent, child)。返回truefalse

检查选择器上的#. ......

<小时/> 的修改

以下是您的代码示例...
请注意,.contains()参数所需的元素必须是DOM元素,而不是jQuery元素。这就是为什么有一些[0]

it('triggerKPopUpClick in head', function() {
  $('.triggerKPopUpClick').trigger('click');

  waitsFor(function() {
    return $.contains('$(#financialDocumentsGrid)[0]', ' $(#AnotherElementWhichShouldBeAChild)[0]');
  }, 'theme switcher never loaded', 10000);
});

以下是CodePen中的示例。

<小时/> 所以...这是一个.contains() “特殊”语法 你注意到DOM元素必须作为字符串发送到.contains参数?

也许你对另一种选择感兴趣:

$("#parent").find("#child").length > 0

如果元素#child中有一个元素#parent,那么true也是如此。