仅当div包含特定文本时才运行jQuery split()函数

时间:2014-12-02 16:50:36

标签: javascript jquery function split

问题在于:

我在正斜杠(/)之前和之后拆分文本。然后我将每个拆分部分包装在不同的span类中,这样我就可以对它们进行不同的设置。但是,如果文本中没有正斜杠,则会将 undefined 一词返回到页面上。由于我不希望 undefined 出现,所以如果文本包含正斜杠,我只需要运行该函数。

这是我目前的代码:

$('.author-info').html(function(i, val) {
  val = val.split('/');
  return '<span class="company">' + val[0] + '</span>' + '/' +
  '<span class="job-title">' + val[1] + '</span>';
})

这转变了:

<div class="author-info">
  Company XYZ / My Job Title 
</div>

进入这个:

<div class="author-info">
  <span class="company">Company XYZ</span> / 
  <span class="job-title">My Job Title</span>
</div>

问题是,如果没有正斜杠,则会在页面上返回单词&#34; undefined&#34; 。所以下面的代码(注意缺少正斜杠):

<div class="author-info">
  Company XYZ My Job Title 
</div>

变成这样:

<div class="author-info">
  <span class="company">Company XYZ My Job Title</span> / 
  <span class="job-title">undefined</span>
</div>

为了防止未定义的文本出现,我需要此功能,只有在 .author-info div中有正斜杠时才能运行。

有没有办法让这种情况发生?

非常感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:4)

尝试......

$('.author-info').html(function(i, val) {
  if (val.indexOf("/")>0) {
    val = val.split('/');
    return '<span class="company">' + val[0] + '</span>' + '/' +
      '<span class="job-title">' + val[1] + '</span>';
  }
})

答案 1 :(得分:1)

使用包含:

$('.author-info').html(function(i, val) {
  if(!$('.author-info:contains("/")'){
     return;
  }
  val = val.split('/');
  return '<span class="company">' + val[0] + '</span>' + '/' +
  '<span class="job-title">' + val[1] + '</span>';
})

答案 2 :(得分:0)

添加if条件以检查整个文本在任何地方是否有/

$('.author-info').html(function(i, val) {
  if(val.indexOf('/')>-1)
  {
     val = val.split('/');
     return '<span class="company">' + val[0] + '</span>' + '/' +
            '<span class="job-title">' + val[1] + '</span>';
  }
})