2011-01-02 15 views
0

これは、一度に5行を表示するテーブルに関係します。 以下のコードは、Firefoxで100%完璧に動作しています。しかし、ie8では、 はeditdivが表示するために一番上の行だけをクリックできます。 firefoxでは 5行のうちのどれかをクリックすると、editdivが期待通りに読み込まれます。関数を呼び出すPHPファイル内jqueryとdata-attrがie8で動作しない

ライン:

echo "<td><a id=\"editjq\" href=\"#\" vid='".$vid."' t1='".$db->hscadd($t1)."' page='".$page."' flag='1')\"> [edit ] </a></td>"; 

機能:

$(document).ready(function() { 
    $('a#editjq').click(function() { 
    var petid = $(this).attr('vid'); 
    var t1 = $(this).attr('t1'); 
    var page = $(this).attr('page'); 
    var flag = $(this).attr('flag'); 
    $("#petdiv").hide(); 
    $.post("edit_lookup.php", { 
     petid : petid, 
     t1 : t1, 
     page : page 
    }, function(data){ 
    if (data.length>0){ 
     $("#editdiv").html(data); 
    } 
    }); 
    $(this).unbind(); 
    return false; 
    }); 
}); 
+0

あなたのPHPコードは無関係です。それが作成してブラウザに送るHTMLは何ですか? – Phrogz

答えて

7

あなたは、それぞれが同じid属性を持つアンカーを持っている5つの行を生産していますか?もしそうなら、それはあなたの問題です。 idと同じ要素を複数持つことは構文上違法です。 id="editjq"の代わりにclass="editjq"$('a.editjq').click(...)を使用してください。

+0

クラスが働いてくれてありがとう – user560131

+0

@ user560131あなたが少し質問をしてあなたのニーズを満たす答えを得るとき、あなたは答えを "受け入れる"べきです(大きなチェックマーク)同様の問題を抱えている他の人には、その答えが役立つことが分かります。 – Phrogz

1

このjqueryプラグインコードをページスクリプトに入れることができます(jquery.min.jsスクリプトタグの後ろにあることを確認してください)。

(function($){    
    var store = {}; 
    $.fn.extend({ 
     collection : function(action, name, value) { 
      var $this = this; 

      var generate = function(){ 
       return "COLLECTION" + parseInt((Math.random() * 100000), 16); 
      } 

      var item_id; 
      var methods = { 
       put: function(){ 
        item_id = $this.attr("id"); 
        if(store[item_id]){ 
         store[item_id][name] = value; 
        } else {     
         while(store[item_id] && $(item_id).length > 0){ 
          item_id = generate(); 
         }     
         $this.attr("id", item_id);     
         store[item_id] = {}; 
         store[item_id][name] = value; 
        } 
        return $this; 
       }, 

       get: function(){ 
        item_id = $this.attr("id"); 
        if(store[item_id] && store[item_id][name]){ 
         return store[item_id][name]; 
        } 
        else{ 
         return null; 
        } 
       }, 

       remove: function(){ 
        item_id = $this.attr("id"); 
        if(store[item_id]){ 
         store[item_id][name] = null; 
        } 
        return $this; 
       } 
      } 

      if(methods[action]){ 
       return methods[action](); 
      } else{ 
       return alert(store.text.length); 
      } 
      return $this; 
     } 
    });  
})(jQuery); 

次のように使用することができる。

  1. ストアデータ値

    $(*selector*).collection("put", *DataName*, *DataValue*); 
    
  2. のデータ値を削除するデータ値

    var referencing_variable = $(*selector*).collection("get", *DataName*); 
    
  3. を盗ん

    $(*selector*).collection("remove", *DataName*); 
    

これは、クロスブラウザのソリューションです。私はJquery 1.5.1でテストしただけですが、

関連する問題