2016-12-06 4 views
1

内の同じ連続した要素がある場合のは、私は今、この文字列どのように文字列またはHTML

<div id="ch">abcdefg<img /><img />hij</div> 
<div id="ad">abc<img />defg<img />hij</div> 

strHtml = $('div#ch').html(); 
strHtmlFalse = $('div#ad').html(); 

があるとしましょうチェックするには2つの「IMG」要素が発見された場合、それらがあるかどうかを確認するために可能な方法があります連続する兄弟。

chConImg = checkConsecutiveImg(strHtml) //true 
chConImgFalse = checkConsecutiveImg(strHtmlFalse) //false 


checkConsecutiveImg(str){ 
    if(consecutive img elements are found) 
     return true; 
    else 
     return false; 
} 
+2

はい、あります。良い出発点はしばしばウェブ検索です。http://stackoverflow.com/questions/28654091/javascript-function-to-automatically-count-consecutive-letters-in-a-string - あなたが失敗した場合、あなたはコードを持っています残念ながら、SOはコードを要求する場所ではなく、既存のコードの助けを求めるためのものです。あなたが何かを試していない場合、あなたが望むものを得る機会は限られています。 – GillesC

答えて

2

バニラJavascriptのアプローチ

function checkConsecutiveImage(str) { 
 
    const parent = document.querySelector(str); 
 
    const children = parent.children; 
 
    const image = Array.from(children).find(elem => elem.tagName === 'IMG'); 
 
    
 
    return image.nextSibling.nodeType === 1 && image.nextElementSibling.tagName === 'IMG' 
 
} 
 

 
console.log(`Consecutive images in #ch: ${checkConsecutiveImage('#ch')}`); 
 

 
console.log(`Consecutive images in #ad: ${checkConsecutiveImage('#ad')}`);
<div id="ch">abcdefg<img /><img />hij</div> 
 
<div id="ad">abc<img />defg<img />hij</div>

jQueryのアプローチ

$(function() { 
 
    function checkConsecutiveImg(str) { 
 
    const $img = $(str).find('img'); 
 
    
 
    return $img[0].nextSibling.nodeType === 1 && $img.next().is('img'); 
 
    } 
 

 
    console.log(`Consecutive images in #ch: ${checkConsecutiveImg('#ch')}`); 
 

 
    console.log(`Consecutive images in #ad: ${checkConsecutiveImg('#ad')}`); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="ch">abcdefg<img /><img />hij</div> 
 
<div id="ad">abc<img />defg<img />hij</div>

1

あなたは機能.contents().is()でそれを達成することができます。

function checkConsecutiveImg(parent) { 
 
    const children = parent.contents(); // e.g. ["abcdefg", <img>, <img>, "hij"] 
 
    let containsConsecutives = false; 
 
     
 
    children.each((index, currentElement) => { 
 
     if ($(currentElement).is('img') && $(children[index - 1]).is('img')) { 
 
      containsConsecutives = true; 
 
     } 
 
    })  
 
     
 
    return containsConsecutives; 
 
} 
 

 
console.log(checkConsecutiveImg($('div#ch'))) 
 
console.log(checkConsecutiveImg($('div#ad')))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="ch">abcdefg<img /><img />hij</div> 
 
<div id="ad">abc<img />defg<img />hij</div>

関連する問題