2017-11-10 10 views
0

特定のプログラムに多数のボタンがあります。しかし、ボタンのどれも特定のクラスを持っていません。したがって、私はそれらを以下のコードで追加します。先頭の空白を削除し、複数の空白を置き換える

jQuery('.btn').each(function() { 
    var btnFullText = jQuery(this).text(); 
    var btnText = btnFullText.replace(/\s+/g, '-').toLowerCase(); 
    jQuery(this).addClass(btnText); 
}); 

これまでのところ、これは非常にうまく動作します。しかし、あなたは完全には推測していないかもしれません。

いくつかのボタンは、次のようにコーディングされている:リンク内のスペースがあるので、この-new-taskようなクラスを作成します

<a class="btn btn-info" href="javascript:void(0);" onclick="Joomla.submitbutton('taskform.add');"><i class="icon-plus icon-white"></i> New Task</a> 

  1. がどのように私は削除に上記のコードを適応させることができます最初の単語の前のすべてのスペース。
  2. 単語間に複数のスペースがある場合、これは1つの-になることを確認するにはどうすればよいですか。

だから、リターンnew-task

<a><i class="icon-plus icon-white"></i> New Task</a> 
<a><i class="icon-plus icon-white"></i>  New  Task</a> 
<a><i class="icon-plus icon-white"></i>   New Task</a> 

PS1以下のすべての例のリンク:私はこのケースでjQuery代わりの$を使用する必要があります。

PS2:上記のコードは、必要に応じて完全にJavascript/jQueryに変更することができます。

PS3:プログラム内のリンクを変更することはできません。

PS4:私はタイトルのより良い提案を聞きたいです。

コードは、これまで

jQuery('.btn').each(function() { 
    var btnFullText = jQuery(this).text(); 
    var btnTrimmedText = btnFullText.trimLeft().replace(/\s+/g, '-').toLowerCase(); 
    var btnText = btnTrimmedText.replace(/-+/, '-'); 
    jQuery(this).addClass(btnText); 
    }); 
+2

以下のコメントから助けを借りて、あなたはありません@epascarello全然簡単なため – epascarello

+0

"左JavaScriptをトリム" 調べました私はこれらの言葉をすべて知っているわけではありません。だから私はそれらを見上げるだけではありません。しかし、私はちょうどあなたのコメントのためにしました。それでは大変ありがとうございます。交換を行う前に、私が正しく調整しなければならないと正しく仮定していますか? – purple11111

+0

値を 'trim()'した後、スペースを '-'に置き換えて、' --'の出現箇所を '-'だけ置き換えて重複を取り除きます。 – Taplar

答えて

2

$('a').each(function(){ 
 
    var $this = $(this); 
 
    //get the text 
 
    //trim the leading and trailing spaces 
 
    //replace all occurances of one or more spaces with '-' 
 
    //lowercase the result 
 
    var clazz = $this.text().trim().replace(/\s+/g, '-').toLowerCase(); 
 
    
 
    //only do this if you don't want '--' in your ids 
 
    clazz = clazz.replace(/-{2,}/g, '-'); 
 
    
 
    $this.addClass(clazz); 
 
    console.log(clazz); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a><i class="icon-plus icon-white"></i> New Task</a> 
 
<a><i class="icon-plus icon-white"></i>  New  Task</a> 
 
<a><i class="icon-plus icon-white"></i>   New Task</a> 
 
<a><i class="icon-plus icon-white"></i>   New - Task</a>

+0

私はIDによって完全に混乱しています。問題はクラスについてだった。だから私はそれを間違って読んでいる? – purple11111

+0

申し訳ありませんが、私はそれを提出した後気づきました。クラスに変更。 – Taplar

+0

この '.edit形式のフィールドセット.btn-toolbar .btn-group .btn.btn-info:not(.dropdown-toggle)'は '.save'になりました。どうもありがとうございました。可能であれば、問題をより良くする方法をアドバイスしてもらえますか? – purple11111

関連する問題