Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript/jQuery中,如何检查字符串的特定部分并确定它是空白还是字母?_Javascript_Jquery - Fatal编程技术网

在Javascript/jQuery中,如何检查字符串的特定部分并确定它是空白还是字母?

在Javascript/jQuery中,如何检查字符串的特定部分并确定它是空白还是字母?,javascript,jquery,Javascript,Jquery,我想写一个函数,当我点击HTML中字符串(或句子)的任意位置时,它会告诉我这是字母还是空白。这可能吗?例如,我点击这句话中的任何地方: <div id='sentence'>The cat in the hat.</div> 帽子里的猫。 假设我点击“猫”里面的字母“a”。我希望它返回一个警报,告诉我我点击了一个角色。假设我点击“cat”和“in”之间的空格。我希望它返回一个警告,说我点击了一个空白 这听起来可能不太可能,但我的一个想法是,也许你点击了某个地方,然后在

我想写一个函数,当我点击HTML中字符串(或句子)的任意位置时,它会告诉我这是字母还是空白。这可能吗?例如,我点击这句话中的任何地方:

<div id='sentence'>The cat in the hat.</div>
帽子里的猫。
假设我点击“猫”里面的字母“a”。我希望它返回一个警报,告诉我我点击了一个角色。假设我点击“cat”和“in”之间的空格。我希望它返回一个警告,说我点击了一个空白


这听起来可能不太可能,但我的一个想法是,也许你点击了某个地方,然后在点击的位置左右进行检查(例如,你在空格和字母之间点击了右键),如果至少有一个字符是空格(比如说在左边),它应该返回你点击了空格。。。这会更容易实现吗?我只是需要一些建议。

不可能直接实现,但如果您接受html元素中的每个字符,这是可能的。以下是我的想法:

var $sentence = $("#sentence");
var sentence = $sentence.html();

//we'll use this after we recreate the sentence
function tellMeWhatIAm(){
  //as its name says it tells what it is
  alert($(this).text());
}

$.each(sentence,function(i,t){
  //clear the sentence
  if(i==0) $sentence.html("");
  //create every char again
  //and bind click event to our function above
  var $span = $("<span/>",{"text" : t, "click" : tellMeWhatIAm});
  //append the chars back to the sentence wrapper
  $sentence.append($span);
});
var$句子=$(“#句子”);
var-sential=$sential.html();
//我们将在重新创建句子后使用它
函数tellmehatiam(){
//正如它的名字所说,它告诉我们它是什么
警报($(this.text());
}
$。每个(句子、功能(i、t){
//清清楚楚
如果(i==0)$句子.html(“”);
//再次创建每个字符
//并将单击事件绑定到上面的函数
var$span=$(“”,{“text”:t,“click”:tellmehatiam});
//将字符追加回句子包装器
$SENTION.append($span);
});
虽然还没有测试过,但是这个想法非常简单

希南,希望能有所帮助。

工作示例@

功能clickify(e){
var arr=e.innerText.split(“”| | e.textContent.split(“”),
最大=平均长度,
i=0,
template=“$c”,
结果=”;
对于(;i
使用范围,无需修改html

  $('#sentence').click(function(e) {
    if (window.getSelection) {
      var cursor = window.getSelection().getRangeAt(0).startOffset 
      var str = e.target.innerHTML;
      alert(str[cursor]);

    } else {
      var range = document.selection.createRange();
      range.expand('character');
      alert(range.text);

    }

  });

有什么限制吗?需要使用的特定浏览器?应适用于所有浏览器;Chrome、Firefox、IE7和Uplook很乐意提供帮助——最好的部分是您不需要jQuery!;-)嘿@Kai,仅供参考,我无法在最新版本的Firefox中使用小提琴,尽管它在IE9和Chrome@D.Tate嘿,谢谢你的报道。我已经更新了fiddle,在调用
split
方法之前检查
innerText
属性是否存在。最新的FF使用了
textContent
,因此它现在成功地进行了故障切换。
  $('#sentence').click(function(e) {
    if (window.getSelection) {
      var cursor = window.getSelection().getRangeAt(0).startOffset 
      var str = e.target.innerHTML;
      alert(str[cursor]);

    } else {
      var range = document.selection.createRange();
      range.expand('character');
      alert(range.text);

    }

  });