【问题标题】:Tag needs to be closed in same line in Jasmine beforeEach function?标签需要在 Jasmine beforeEach 函数的同一行中关闭吗?
【发布时间】:2018-07-16 21:45:58
【问题描述】:

我正在为我的 javascript 编写 jasmine 测试,在每次测试之前需要一个带有两个或三个选项的 select 标记。所以,我把这段代码放在了我的 beforeEach 函数中

$('<select class="tags" multiple name="tagList" id="tagListID" title="Tag List" size=3 class="form-control select"><option onmousedown="multiSelect(event, this)" value="java" id="java">'+ tag1 +'</option><option onmousedown="multiSelect(event, this)" value="php" id="php">'+ tag2 +'</option> </select>').appendTo('body'); 

有效。但是,当我使用 appendTo('body') 函数将单行分成多行时,我的测试没有通过。

$('<select class="tags" multiple name="tagList" id="tagListID" title="TagList">').appendTo('body');
$('<option onmousedown="multiSelect(event, this)" value="java" id="java">'+ tag1 +'</option>').appendTo('body');
$('<option onmousedown="multiSelect(event, this)" value="php" id="php">'+ tag2 +'</option>').appendTo('body');
$('</select>').appendTo('body');

我不知道如何将这一行变成多行。它是否不起作用,因为开始和结束标签应该在同一行(我不这么认为)。

谢谢

【问题讨论】:

  • jQuery 对象只能包装完整的 DOM 元素,不能包装 HTML 片段。 $('&lt;/select&gt;') 毫无意义。
  • @SLaks 等等,你是对的,所以开头的 $ 并没有真正附加到正文或使用 jQuery,以前从未使用过。

标签: javascript html unit-testing jasmine


【解决方案1】:

这不应该也有效吗,因为它仍然将下一行视为同一个脚本?在 Javascript (Vanilla) 中,每当我需要从新行开始并重新引入引号时,我只需使用 +。我看到人们还使用 (`) 来打开和 (`) 在最后关闭,它们具有相同的功能,但没有 (+) 的。

$('<select class="tags" multiple name="tagList" id="tagListID" title="TagList">' +
'<option onmousedown="multiSelect(event, this)" value="java" id="java">'+ tag1 +'</option>' +
'<option onmousedown="multiSelect(event, this)" value="php" id="php">'+ tag2 +'</option>' +
'</select>').appendTo('body');

【讨论】:

  • 你绝对让我开心。非常感谢!
  • 这项工作是否符合您的预期? $ 不应该在那里,我将编辑我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 2013-09-03
  • 2013-05-31
  • 1970-01-01
相关资源
最近更新 更多