这涉及一个表格,我一次显示5行。 以下代码在firefox中100%完美运行。但在ie8, 只有顶行可以单击以显示editdiv。然而,在Firefox中 我可以点击五行中的任意一行,并按预期加载editdiv。
调用函数的php文件中的行:
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 :(得分:7)
您是否生成了五行,每行都有一个具有相同id
属性的锚点?如果是这样,那就是你的问题。具有相同id
的多个元素在语法上是非法的。而不是id="editjq"
使用class="editjq"
和$('a.editjq').click(...)
。
答案 1 :(得分: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);
可以按如下方式使用:
存储数据值
$(*selector*).collection("put", *DataName*, *DataValue*);
检索数据值
var referencing_variable = $(*selector*).collection("get", *DataName*);
删除数据值
$(*selector*).collection("remove", *DataName*);
这是一个跨浏览器的解决方案。虽然我只使用Jquery 1.5.1进行了测试