2012-02-04 4 views
1

私はjqueryを楽しくしています。以下は私が今までにできる唯一の作業コードです。その他の裁判は幸せではない:いくつかのjquery配列の分割に効率的なコードを作成する

HTML

<div class="someparent">...<p><input type="text" value="0 0 12 12" class="radius"></p></div> 

のjQuery:

$('input.radius').each(function() { 
      var preview = $(this).parents('.someparent'); 

      $(this).keyup(function() { 
       var rad = $(this).val(); 

       c = rad.split(' '); 
       tl = c[0] ? c[0] + 'px' : ''; 
       tr = c[1] ? c[1] + 'px' : ''; 
       bl = c[2] ? c[2] + 'px' : ''; 
       br = c[3] ? c[3] + 'px' : ''; 

       var radius = tl + ' ' + tr + ' ' + bl + ' ' + br;    
       $(preview).css('border-radius', radius); 
      }); 
      if ($(this).val()) { 
       var rad = $(this).val(); 

       c = rad.split(' '); 
       tl = c[0] ? c[0] + 'px' : ''; 
       tr = c[1] ? c[1] + 'px' : ''; 
       bl = c[2] ? c[2] + 'px' : ''; 
       br = c[3] ? c[3] + 'px' : ''; 

       var radius = tl + ' ' + tr + ' ' + bl + ' ' + br;     
       preview.css('border-radius', radius); 
      } 
    }); 

基本的にコードは、その電流を維持しながら、任意の入力に基づいて動的にプロパティを更新したいですデフォルトで利用可能な場合はいつでも任意のヘルプ

+1

ピクセルせず、常に初期値は、単に 'C = rad.split( ' ').join(' PX')を使用している場合;' – Omid

+0

@Omid:なぜ代わりにコメントの答えとしてあることを投稿していません、それが解決策ならば? –

+0

はい、簡略化のため、常にピクセルです。ありがとう。しかし、可能であれば、類似のコードの両方のチャンクを1つにマージする方法が不思議です。もしそうでなければ、それはそうです、そうですか?希望しない:) – swan

答えて

4

ため おかげで、ピクセルのない、常に初期値は、単に使用している場合:

$('input.radius').each(function() { 
    var preview = $(this).parents('.someparent'); 

    $(this).keyup(function() { 
     var rad = $(this).val(); 
     c = rad.split(' ').join('px '); 
     $(preview).css('border-radius', c); 
    }).keyup(); // trigger keyup manually to initial 
}); 
+0

ありがとうございました。両方の類似したチャンクを結合する方法はありますか? – swan

+0

うわー、美しい。ありがとう。私はちょうどそのトリガのキーアップを使用したことを思い出しました。コンテキストはselect()を使ってchange();とするだけです。ありがとうございました – swan

1

テキストの変更については、私はchangeイベントを使用することを好みます。

$('input.radius').change(function() { 
    var $this = $(this); 
    var rad = $this.val(); 
    if (rad) { 
     $this.parents('.someparent').css('border-radius', rad.split(' ').join('px ')); 
    } 
}); 
+0

これはよりユーザーフレンドリーで、プレビューを更新するスペースを追加する必要はありません、右か?しかし、不思議なことに私は "構文エラー"を続けています。ありがとう – swan

+0

@swan固定された ';'と 'function'が欠けています。 – xdazz

+0

あなたはfunction()declationを見逃しましたが、私は恐れています。私はテキストの変更に直ちに影響を与えることを意味しなかった、私はまだスペースを追加する必要があります。どのようなアイデアを更新するライブですか? – swan

関連する問題