求解为什么这个click不能再次用

lipei123l 2015-09-12 12:19:48
公司的,实习不懂,在355行是我加的全选代码,为什么在更换关系,也就是59行左右以后,这个click就失效,我使用的是jquery的($.CLASS)找的对应的checkbook,重新生成的CLASS是没变的,为什么不能用了、
var sdm = function() {}; // 显示搜索面板
var selectIDFn = function() {}; // 选择表数据
var all = function() {}; // 选择表数据
var delSelectNID = function() {}; // 删除已选表数据
var fuzzy = true; // 是否懒搜索
var page = 1; // 分页
var searchInfo; // 输入框
var param = {}; // 搜索属性
var type = ""; // 类型
var showTableFn = function(){};
var searchJson = {};
/**
* 获取图数据地址
*/

* 获取图数据地址

var urlMiddle = "";
var selectNID = []; // 已经选择的NID
var selectJSONData = []; // 已经选择的数据
var relationsData = []; // 关系
var maxresultNum;
var maxnodesizeNum;
var relations_classify = {//关系分类对象
"company": ["SELL"],
"user": ["LOVE", "HATE", "KNOWS"]
};

function showLoading(){
loadingImg_B();
}

$(document).ready(function() {
sdm = function showSearchModal() {
$('#searchModal').modal("show");
}


var sel_o = c_data;
addFieldOption();

var tHeadline = ["选择", "编号", "名称", "年龄"];//左侧头题
var tHKey = ["编号", "名称", "年龄"];//右侧头题

// Entity Type 改变触发
$("#entityType").change(function() {
var etVal = $("#entityType").val();
if (etVal == "company") {
sel_o = c_data;
addFieldOption();

} else if (etVal == "user") {
sel_o = u_data;
addFieldOption();
}
addRelationBox(etVal)
});

addRelationBox( etVal = $("#entityType").val());
function addRelationBox(rel){
var a = relations_classify[ rel];
var label = "";
for( var i=0 ; i < a.length ; i++){
label += '<label class="schecked"><input name="relations" type="checkbox" checked="checked" value="'+a[i]+'" />'+a[i]+'</label>';
}
$( "#relation_label").html( label);

$("#showSelectNodeTB").empty();
$("#showSearchDataTB").empty();
if(rel == "company"){
var table = "<thead><tr><td>" + "<input class=\"all_2\" type=\"checkbox\"/>全选" + "</td><td>" + "编号" + "</td><td>" + "名称" + "</td></thead><tbody id=\"showSelectNodeBody\"></tbody>"
$("#showSelectNodeTB").append(table);
table = "<thead><tr><td>" + "<input class=\"all_1\" type=\"checkbox\"/>全选" + "</td><td>" + "编号" + "</td><td>" + "名称" + "</td><td>" + "资金(万)" + "</td></thead><tbody id=\"showSearchDataBody\"></tbody>"
$("#showSearchDataTB").append(table);
}else if( rel == "user"){
var table = "<thead><tr><td>" + "<input class=\"all_2\" type=\"checkbox\" style=\"display: none\"/>全选" + "</td><td>" + "编号" + "</td><td>" + "名称" + "</td></thead><tbody id=\"showSelectNodeBody\"></tbody>"
$("#showSelectNodeTB").append(table);
table = "<thead><tr><td>" + "<input class=\"all_1\" type=\"checkbox\" \"/>全选" + "</td><td>" + "编号" + "</td><td>" + "名称" + "</td><td>" + "年龄" + "</td></thead><tbody id=\"showSearchDataBody\"></tbody>"
$("#showSearchDataTB").append(table);
}
showSelectTb();
}

// 添加选择框数据
function addFieldOption() {
$("#entityField option").remove();
// $("#select_id option[text='4']").remove();
for (var i = 0; i < sel_o['val'].length; i++) {
$("#entityField").append(
"<option value='" + sel_o["val"][i] + "'>" + sel_o["text"][i] + "</option>");
}
}

// 上一页
$("#pageUp").click(function() {
if (page > 1) {
page--;
getSearchdata("findNode");
}
});
// 下一页
$("#pageDown").click(function() {
if (searchInfo.length == 0) {
return false
} else {
page++;
getSearchdata("findNode");
}

});

// 查找已选数据
selectIDFn = function() {
selectNID = [];
/*
* $('input[name="NID"]:checked').each(function(){
* selectNID.push($(this).val());
* //selectJSONData.push(); });
*/
var i = 0;
var sj = searchJson["NODES"];
$('input[name="dNID"]')
.each(
function() {
if (this.checked == true) {
if ($.inArray(sj[i],
selectJSONData) == -1) {
selectJSONData.push(sj[i]);
}
} else {
$.each(selectJSONData, function(k) {
if (sj[i]["NID"] == selectJSONData[k]["NID"]) {
selectJSONData.splice(k, 1);
return false;
}
});
}
i++;
});
showSelectTb();
};


// 搜索数据searchBT
$("#searchBT").click(function() {
searchInfo = TrimBlank( $("#searchInput").val());//去除空格后的输入内容
type = $("#entityType").val(); //获得查询的是人名还是公司名
if( searchInfo == ""){
alert( "请输入搜索信息...");
}else{
getSearchdata("findNode");
}
});

/**
* 显示搜索数据表格
*/
showTableFn = function(){
$("#showSearchDataBody").empty();
// var sJSON = JSON.parse(searchJson);
var data = searchJson["NODES"];
// var table = "<tr><td>"+ "Search" + "</td><td>" +
// "NID" + "</td><td>" + "NAME" + "</td><td>" + "AGE" +
// "</td><td>" + "TYPE" + "</td>"
var table = "";
for (var i = 0; i < data.length; i++) {
table += "<tr><td>" + '<input value="' + data[i]["NID"] + '" name="dNID" class="selectID" onClick="javascript:selectIDFn(this);" type="checkbox"';
if (JSON.stringify(selectJSONData).indexOf(
JSON.stringify(data[i])) != -1) {
table += 'checked="checked"';
} else {

}
if( data[i]["PROPERTIES"]["age"] != undefined){
table += '>' + "</td><td>" + data[i]["PROPERTIES"]["id"] + "</td><td>" + data[i]["NAME"] + "</td><td>" + data[i]["PROPERTIES"]["age"] + "</td>"
}else if( data[i]["PROPERTIES"]["money"] != undefined){
table += '>' + "</td><td>" + data[i]["PROPERTIES"]["id"]+ "</td><td>" + data[i]["NAME"] + "</td><td>" + data[i]["PROPERTIES"]["money"] + "</td>"
}

}

table += "</tr>";
$("#showSearchDataBody").append(table);
// getSelToSeaChecked();
}
// 将已选的数据表格

function showSelectTb() {
$("#showSelectNodeBody").empty();
// var data = searchJson["NODES"];
var data = selectJSONData;
// var table = "<tr><td>"+ "Search" + "</td><td>" +
// "NID" + "</td><td>" + "NAME" + "</td>"
var table = "";
for (var i = 0; i < data.length; i++) {
table += "<tr><td>" + '<input value="' + data[i]["NID"] + '" name="sNID" class="selectID" onClick="javascript:delSelectNID(this);" type="checkbox" checked="checked">' + "</td><td>" + data[i]["NID"] + "</td><td>" + data[i]["NAME"] + "</td>"
}
table += "</tr>";
$("#showSelectNodeBody").append(table);
}

function getSelToSeaChecked() {
$.each(selectJSONData, function() {
var ll = $('input [name="dNID" value=\"' + this["NID"] + '\"]').checked = true;
});
}
// 已经选择的数据
delSelectNID = function(n) {
$('input[name="dNID"]:checked').each(function() {
if ($(this).val() == n.value) {
this.checked = false;
}
});
$.each(selectJSONData, function(k) {
if (n.value == selectJSONData[k]["NID"]) {
selectJSONData.splice(k, 1);
return false;
}
});
selectIDFn();
}
// 获取参数设置数据

function getPreferences() {
relationsData = [];
$('input[name="relations"]').each(function() {
if (this.checked == true) {
relationsData.push(this.value);
}
});
maxresultNum = $("#MAXRESULT").val();
maxnodesizeNum = $("#MAXNODESIZE").val();
}
$(".close_btn").click(function() {
$(".modal").css("display", "none");
})
$(document).bind("click", function(e) {
var target = e.target;
if (target.id == "background_box") {
backgroundHide();
}
});

function backgroundHide() {
$("#searchModal").hide();
$("#background_box").hide();
}

// 搜索数据方法 提交数据方法
function getSearchdata(s) {
$( "#searchBT").attr( "disabled","disabled");//设置搜索按钮不可用
showLoading();
if (s == "findNode") {
param = {};
if ($("#entityField").val() == "name") { //如果搜索时选择关系为 名称
param["name"] = ""; //为这个对象添加一个属性
param["name"] = searchInfo; //为属性值为输入的搜索内容
} else {
param["id"] = "";
param["id"] = searchInfo;
}
fuzzy = $("#fuzzyCB").is(":checked");
urlMiddle = urlSearch;
urlMiddle += "?TYPE=" + $("#entityType").val();
urlMiddle += "&FUZZY=" + fuzzy;
//urlMiddle += "&FUZZY=" + "true";
urlMiddle += "&PAGE=" + page;
urlMiddle += "&COUNT=" + 10;
urlMiddle += "¶M=" + JSON.stringify(param);
};
sendSearchData( urlMiddle);
/*$.ajax({
type: "GET",
cache: true,
async: true,
dataType: "text",
timeout: 20000,
url: urlMiddle + "×tamp=" + new Date().getTime() ,
success: function(info) {
// 添加空数据提示
searchJson = JSON.parse(info);
loadingImg_N();
$('#searchBT').removeAttr("disabled");
if (searchJson["NODES"].toString().length <= 0) {
alert("返回数据为空,尝试输入其它内容进行搜索。如:李");
} else {
showTableFn();
}
},
complete: function(XMLHttpRequest, status) { //请求完成后最终执行参数
loadingImg_N();
$('#searchBT').removeAttr("disabled");
if (status === 'timeout') { //超时,status还有success,error等值的情况   
//ajaxTimeoutTest.abort();
if (!fuzzy) {
alert("查询超时,请重试...");
//alert("查询超时 , 请尝试使用模糊查询进行搜索。");
} else {
alert("查询超时,请重试...");
}
} else if (status === 'error') {
alert("连接出错,请重试...");
}
}
});*/
};


//左侧全选的事件
$(".all_1").click(function(){
var is = $('.all_1').is(":checked");
var checklist = document.getElementsByName("dNID");
$(".all_2").prop("checked",is);
if(is == false){
$(".all_2").css("display","nonew");
}
else{
$(".all_2").css("display","block");
}
for(var i=0;i<checklist.length;i++){
if(checklist[i].checked != is){//如果被选中状态,与点击全选按钮后,全选按钮的状态不一致则点击它,下同
checklist[i].click();
}
}
});

//右侧全选的事件
$(".all_2").click(function(){
var is = $('.all_2').is(":checked");
var checklist = document.getElementsByName("dNID");
$(".all_1").prop("checked",is);
for(var i=0;i<checklist.length;i++){
if(checklist[i].checked != is){
checklist[i].click();
}
}
});
});


// 显示搜索面板
function showSelectModel(a) {
$(".modal").css("display", "block");
//$("#TopoGraph").css("visibility","hidden");
sdm();
}

//显示搜索后的 数据
function showSelectData(info , e) {

loadingImg_N();
$('#searchBT').removeAttr("disabled");
if( e.length >0){
alert( e);
}else{
// 添加空数据提示
searchJson = JSON.parse(info);
if (searchJson["NODES"].toString().length <= 0) {
alert("返回数据为空,请尝试模糊搜索或检查输入内容。如:李");
} else {
showTableFn();
}
}
}



...全文
134 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
forrg 2015-09-14
  • 打赏
  • 举报
回复
    addRelationBox( etVal = $("#entityType").val());     function addRelationBox(rel){ 这2行 ,你方法在全局域里直接调用?而且调用的时候也没加载到这个方法,肯定就报错碰到undefine了,代码写错了,addRelationBox这个方法要在哪执行就放到执行体里
lipei123l 2015-09-14
  • 打赏
  • 举报
回复
解决 原因是不应该在$(document).ready(function()外部添加,对行的click事件,因为用循环生成的行也许ID无法捕获,直接$(document).ready(function()里编写click事件,在每次循环添加行的过程中为行添加单击事件为刚才编写的click事件
hookee 2015-09-12
  • 打赏
  • 举报
回复
如果你用的是较新版本的jquery 不要用 xxx.click( function(){ .... } ) 改用 on xxx.on("click", function(){ ... }) 低版本的用 xxxx.live("click", function(){ .... })
lipei123l 2015-09-12
  • 打赏
  • 举报
回复
求指教啊大神们...@( ̄- ̄)@

87,970

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧