我有一个jQuery函数,我用以下代码调用。该函数搜索“QAList”中“words:”区域中显示的单词,然后将这些单词加粗。这个代码工作正常,“Demo”和“or”这两个词变得粗体。
$("[id$=QAList]").wrapInTag({
words: ['Demo User', 'or'],
tag: '<selected>'
});
我现在正试图从标签或文本框中传递“单词:”列表,但由于某种原因我无法通过正确的信息,我不是百分百肯定看到它实际传递的内容。
这是我将代码更改为从lblSelectedQA标签中提取的方式:
$("[id$=QAList]").wrapInTag({
words: [$("[id$=lblSelectedQA]").html()],
tag: '<selected>'
});
我甚至在文本框中尝试过,以防标签由于某种原因无效:
$("[id$=QAList]").wrapInTag({
words: [$("[id$=lblSelectedQA]").val()],
tag: '<selected>'
});
如果我将它们置于警报状态,我会从标签和文本框中获得所需内容,然后返回:
'演示用户','或'
我在“单词:”之后是否有错误的语法,因为我试图从其他地方传递值?
谢谢!
**编辑以回应iurisilvio的回答
为了回答你的回答,我在填充'Demo User', 'or'
文本的内容中更改了我的代码,以摆脱单引号和额外空格。它现在看起来像这样:Demo User,or
并且单个结果可以正常工作。
然后我尝试添加.split(“,”),如果我添加了索引[0]或[1],它对数组中的一个值起作用,但对于所有数组项都不会单独使用。< / p>
Utkanos显示基本相同的东西,只是添加一种方法来摆脱我不再需要做的空格和单引号。
这是我现在的代码,适用于单个结果:
$("[id$=QAList]").wrapInTag({
words: [$("[id$=lblSelectedQA]").html().split(",")],
tag: '<selected>'
});
但是当它返回多个结果时它将无法工作,除非我添加索引,但那时只适用于我硬编码的索引...不是一个选项,因为我不知道会有多少阵列。
$("[id$=QAList]").wrapInTag({
words: [$("[id$=lblSelectedQA]").html().split(",")[0]],
tag: '<selected>'
});
或
$("[id$=QAList]").wrapInTag({
words: [$("[id$=lblSelectedQA]").html().split(",")[1]],
tag: '<selected>'
});
我有没有办法让它获取所有数组项而不必循环遍历它们?
谢谢!
**编辑解决方案:
我需要删除我刚刚添加的括号。我想出来并且回来了,Utkanos刚刚发布了同样的事情:)
工作代码:
$("[id$=QAList]").wrapInTag({
words: $("[id$=lblSelectedQA]").html().split(","),
tag: '<selected>'
});
谢谢!
答案 0 :(得分:2)
这样,你的单词var就等于["'Demo User', 'or'"]
(一个元素)。如果你拆分你的字符串,你得到你想要的东西:
// suposing your_text is right
words: your_text.split(",")
当然这是一个简化的解决方案。如果你想获得类似'word, 1', 'word 2'
的东西,你需要一个更好的解析器来解决你的问题,但这就是它的方式。
答案 1 :(得分:1)
words
参数应该是一个数组。字符串'Demo User', 'or'
看起来像是包含这些值的数组的打印输出,但最终是字符串,而不是数组。
换句话说,你传递的字符串看起来有点像数组,而不是实际的数组。
假设您正在从元素中检索的字符串是'Demo User', 'or'
,您需要通过拆分分隔符(在您的情况下为逗号和空格)将其拆分为数组。您还需要删除各种令牌周围的'
。
$("[id$=QAList]").wrapInTag({
words: $("[id$=lblSelectedQA]").val().replace(/'/g, '').split(, ?/),
tag: '<selected>'
});