【问题标题】:Jquery- Selecting individual word from a textJquery-从文本中选择单个单词
【发布时间】:2019-04-18 22:43:00
【问题描述】:

如何使用 Jquery 选择一个单词并将其保存到数据库中。 IE, 假设我的页面中有以下内容,

"<p>This is a beautiful sentence </p>"

如果我点击“美丽”,我想显示一个弹出选项“添加”。如果我点击“添加”,“美丽”这个词将保存在我现有的词库中。如果我再次点击它不会被保存,数据库包含独特的单词。

我在 Django 中工作。

编辑: 我尝试了以下方法:

<script>
$(document).ready(function(){
  $("p").click(function(){
    var value = $(this).text();
    var input = $('#my_input');
    input.val(value);
  });            
});    
</script>

【问题讨论】:

  • 您可能希望使用某种类型的元素(例如&lt;span&gt;)来包装应该可以点击的文本的每一部分。这样您就可以将点击回调附加到每个包装器。
  • 你能再解释一下吗?如何添加跨度?或者我可以清楚地了解这一点的任何资源?
  • 他们建议您将标记更改为&lt;p&gt;&lt;span&gt;This&lt;/span&gt; &lt;span&gt;is&lt;/span&gt; &lt;span&gt;a&lt;/span&gt; &lt;span&gt;beautiful&lt;/span&gt; &lt;span&gt;sentence&lt;/span&gt; &lt;/p&gt;
  • 完全按照 Taplar 的建议。您的测试代码会调用来自&lt;p&gt; 的所有文本,而不仅仅是一个单词。很难通过点击位置来识别单词,但我建议找到更好的方法来标记单词。

标签: jquery django web


【解决方案1】:

例子:

$(function() {
  $("p.allow-click span").click(function() {
    var value = $(this).text();
    var input = $('#my-input');
    input.val(value);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="allow-click"><span>This</span> is a <span>beautiful</span> <span>sentence</span>.</p>
<input id="my-input" type="text" />

如您所见,这允许每个特定单词都有一个点击事件。您几乎可以使用任何标签,但&lt;span&gt; 在某种意义上是侵入性最小的。您可以使用 &lt;b&gt;&lt;i&gt; 或其他一些 HTML 标记。这些可能会更改 &lt;span&gt; 不会更改的文字的字体或外观。

更新

如果你不想手动编辑 HTML,而是在 jQuery 中完成,你可以这样:

$(function() {
  function applyClick($t) {
    var inner = $t.text().trim();
    var trail = false;
    if (inner.slice(-1) == ".") {
      trail = true;
      inner = inner.slice(0, -1);
    }
    var parts = inner.split(" ");
    $.each(parts, function(k, v) {
      parts[k] = "<span>" + v + "</span>";
    });
    var myInner = parts.join(" ");
    if (trail) {
      myInner = myInner + ".";
    }
    $t.html(myInner);
    $t.find("span").click(function() {
      var value = $(this).text();
      var input = $('#my-input');
      input.val(value);
    });
  }
  applyClick($(".allow-click"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="allow-click">This is a beautiful sentence.</p>
<input id="my-input" type="text" />

希望对您有所帮助。

【讨论】:

  • 那么,我需要手动添加跨度吗?还是有其他功能可以做到这一点?
  • @SubrotoPinku 您可以手动添加它们,也可以对其进行编程。
  • @SubrotoPinku 如果这回答了您的问题,我希望您也将其标记为答案。
  • @SubrotoPinku 这也包含在我上面的更新中。检查代码。
  • @SubrotoPinku 如果有多个句点符号或其他符号,那么您可能需要使用正则表达式执行更复杂的搜索来找到它们。由于它们可以出现在句子的任何部分,您可能希望捕获每个符号的索引位置以及符号是什么,然后将其从句子中删除。或者不这样做,您可以将其作为单词的一部分保留,然后在它出现在文本字段中之前将其过滤掉。试一试,如果需要,用您尝试过的内容创建一个新问题。
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多