Wykonałem prostą funkcję jQuery, która wykończa tekst. Wykorzystuję to w ten sposób:

// JS
function truncate() {

   <! – Stuff to do -->

}
truncate();


// ...    


// HTML
<div class="Truncate" data-words="60">

    <! – Text to Trim -->

</div>

Problem polega na tym, że funkcja daje mi błąd za każdym razem, gdy załaduję stronę, która nie ma div z klasą "obcięciem" na nim.

Więc chciałbym go uruchomić tylko wtedy, gdy jest tam <div>. Właściwie to, że sama <div> wyzwala funkcję.

Wiem, że mogę go owinąć w oświadczeniu, jeśli sprawdzam klasę, ale zastanawiałem się, czy z jQuery mogę nazwać go selektorem, coś w rodzaju:

$('.Truncate').myfunctionName() {
   my stuff
};

To jest twórcza składnia, tylko po to, żebyś zrozumiał.

...Z góry dziękuję.

1
rolfo85 26 czerwiec 2017, 21:04

5 odpowiedzi

Najlepsza odpowiedź

Prosta odpowiedź, jeśli mam to dobrze.

function doStuff(elements) {
  console.log('doing stuff...');
}

$(function() {
  var truncates = $('.Truncate');

  if (truncates.length) { // here you validate if there is any element with that class
    doStuff(truncates);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="Truncate"></div>
3
Ramon Marques 26 czerwiec 2017, 18:37

Zrobiłem to w końcu ...

if( $('.Truncate').length ) {
    (function() {
        suff
    })();
}

Czy to jest w porządku?

0
rolfo85 26 czerwiec 2017, 18:32

Możesz utworzyć wtyczkę mini jquery:

// include jquery first

$.fn.truncate = function() {
  return $(this).each(function() {
    $(this).text($(this).text().substr(0, 2));
  });
};

$(".truncate").truncate()
$(".someotherclass").truncate();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='truncate'>Abc</div>
<div class='truncate'>Xyz</div>
<div class='notruncate'>123</div>
0
freedomn-m 26 czerwiec 2017, 18:26

Kolejne proste rozwiązanie przy użyciu QuerySelector https://developer.mozilla.org / EN-US / DOCS / Web / API / Dokument / QuerySelector

if(document.querySelector(".Truncate")){ //if element with .Truncate exists
  truncate();
}
1
Scott C 26 czerwiec 2017, 18:25

Oto kod JS z funkcją IFEES:

(function(){
 var elmTranc=document.getElementsByClassName('Truncate');
  if(elmTranc){
    for(var i=0;i<elmTranc.length;i++){     
      elmTranc[i].innerHTML.trim();
    }
  }
})();
1
liontass 26 czerwiec 2017, 18:13