2014-12-02 2 views
0

Вот проблема:Run JQuery Раскол(), только если DIV содержит некоторый текст

Я расщепляющий текст до и после косой черты (/). Затем я обертываю каждую из разделенных частей в другой класс span, поэтому я могу их отличить по-разному. Однако, если в тексте нет косой черты, он возвращает слово 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> 

Еще раз, проблема в том, что если нет НИКАКОГО прямой слэш , он возвращает слово «undefined» на страницу. Таким образом, следующий код (обратите внимание на отсутствие прямой слэш):

<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> 

Для того, чтобы предотвратить неопределенную текст появлялся, мне нужна эта функция для ONLY запустите, если в поле есть косая черта .author-info div.

Есть ли способ сделать это возможным?

Большое спасибо за любую помощь, которую вы можете дать!

ответ

3

Try ...

$('.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>'; 
    } 
}) 
+0

Спасибо за ваш ответ. К сожалению, это все еще вернуло «неопределенный» текст ... Можно увидеть здесь: http://jsfiddle.net/rtkarpeles/1zs4Lyek/ –

+0

Используйте 'if (val.indexOf ("/")> 0) {' – rfornal

+0

Блестящий! Спасибо огромное! Прекрасно работает! –

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

Добавить, если условие, чтобы проверить, если весь текст имеет / в любом месте:

$('.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>'; 
    } 
}) 
+0

Это отлично работает! Большое спасибо! –

Смежные вопросы