2011-10-22 9 views
0

私はまだjavascriptで良くないので、いくつかの助けが必要です。私はjQuery Autosuggest Pluginを使い始めました。これはタグを追加することができます(stackoverflowタグ付けのように)。私がしたいことは、選択されたタグごとにチェックボックスを生成することです。このため、プラグインを変更して、各タグ名を<span class="tag tag_name">tag_name</span>にラップするようにしました。タグを取得するのが簡単です。このようにします:$(".tag").attr("class").replace("tag ", "");。とにかく、私はチェックボックスを生成するスクリプトを書きましたが、問題は、最初のタグのチェックボックスだけを生成し、2秒ごとにそれを生成し続けるということです。また、スクリプトがあまりにも多くの予選になるかもしれないと心配しています。スクリプトは次のとおりです。jQuery/Javascriptで生成する際のいくつかの問題

$(document).ready(function(){ 
    var done = {}; 
    $("input[type=text]").autoSuggest("get.php", {searchObjProps:"name", selectedItemProp:"name", asHtmlID: "1"}); 
    var timer = setInterval(function(){ 
     if(!done[city]){ 
      var city = $(".mestoJe").attr("class").replace("mestoJe", ""); 
      done[city] = true; 
     } 
     var nr = 0; 
     $.each(done, function(i, j){ 
      if(j != 2){ 
       var tmp = $('<input type="checkbox" value="'+nr+'" name="city[]">'+i+'<br />'); 
       $("#checkboxes").append(tmp); 
       j = 2; 
       nr++; 
      } 
     }); 
    },2000); 

}); 

助けてください!スクリプトの次の行で

+0

なぜ2秒間隔のタイマーにチェックボックスを追加するのですか?なぜあなたが望むものをすべて追加してやるのではないのですか?すべてのチェックボックスを追加したら、タイマーを止めないでください。 – jfriend00

+0

どうすればいいですか?私はこれで本当にばかげている:S – ItsGreg

+0

タイマーの停止は 'clearInterval(timer)'で行われます。 – jfriend00

答えて

2

var city = $(".mestoJe").attr("class").replace("mestoJe", ""); 

あなたはクラス名を削除するには.replace()を呼び出して、何もが実際に変更されていないので、何にでも戻ってそれを割り当てていません。 。

:それは渡されたものを修正しない

を実際に次回のクラス名を変更するため、次の都市に進出す​​るには、タイマー火災、あなたはこのようなものを使用しなければならないでしょう - .replace()して置き換えた文字列を返します。

var firstCity = $(".mestoJe").get(0); 
var city = firstCity.className = firstCity.className.replace("mestoJe", ""); 

あなたは、クラス名を変更しない場合は、このコード行が毎回まったく同じ結果とまったく同じ都市名を生成します。また

var city = $(".mestoJe").attr("class").replace("mestoJe", ""); 

、あなたは2秒を開始していますインターバルタイマーとそれを停止することはありませんそれは永遠に続く。

また、参照されています

if(!done[city]){ 

あなたはcityを定義した前。

+0

実際、このクラスは次のようなものです: ' city'、私はそれから私が欲しいものを正確に取得します。そして、それは最初の問題ではなかった。 – ItsGreg

+0

しかし、あなたはこれをすべてのタイマーで繰り返し呼び出すので、あなたは何も変更しないので毎回まったく同じ結果が得られます: 'var city = $("。mestoJe ")。attr(" class ")。replace(" mestoJe " ""); ' – jfriend00

+0

ホーリー・モリー!私はあなたが最初に言っていたことを得ていなかった、私の悪い。私は都市名を置き換えて保存できると思った。実際にはすべてのチェックボックスが生成されますが、アレイ全体が表示されるわけではありません。 – ItsGreg

関連する問題