0

我有一个使用以下代码调用的 jQuery 函数。该函数搜索“QAList”中“words:”区域中显示的单词,然后将这些单词加粗。这段代码可以正常工作,并且“Demo”和“or”这两个词都加粗了。

    $("[id$=QAList]").wrapInTag({
      words: ['Demo User', 'or'],
      tag: '<selected>'
    });

我现在正试图从标签或文本框中传递“单词:”列表,但由于某种原因,我无法让它传递正确的信息,而且我不能 100% 确定它实际传递的是什么。

这就是我更改代码以从 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],它适用于数组中的一个值,但不会独立用于所有数组项。

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>'
    });

谢谢!!

4

2 回答 2

2

这样,你的话 var 是相等的["'Demo User', 'or'"](一个元素)。如果你拆分你的字符串,你会得到你想要的:

// suposing your_text is right
words: your_text.split(",")

当然,这是一个简化的解决方案。如果你想得到类似的东西'word, 1', 'word 2',你需要一个更好的解析器来解决你的问题,但它就是这样。

于 2012-07-11T15:26:03.053 回答
1

words参数应该是一个数组。该字符串'Demo User', 'or'看起来像是包含这些值的数组的打印输出,但最终是字符串,而不是数组。

换句话说,您传递的字符串看起来有点像数组,而不是实际的数组。

假设您从元素中检索的字符串是,如您所说,'Demo User', 'or'您需要通过分隔符将其拆分为数组 - 在您的情况下,逗号和空格。您还需要删除'各种令牌周围的。

$("[id$=QAList]").wrapInTag({
    words: $("[id$=lblSelectedQA]").val().replace(/'/g, '').split(, ?/),
    tag: '<selected>'
});
于 2012-07-11T15:27:26.707 回答