Javascript $(this).css()正在生成未捕获的TypeError:无法读取属性';默认视图';未定义的

Javascript $(this).css()正在生成未捕获的TypeError:无法读取属性';默认视图';未定义的,javascript,jquery,css,Javascript,Jquery,Css,我有一个下面的代码,我想检查一个元素的id,但当我把 $(this).attr("Id"); 它返回“未定义”。所以我跟他核实了一下 .css("width"); 它返回: Uncaught TypeError: Cannot read property 'defaultView' of undefined. 下面是我的代码: 函数创建登录对话框(){ $(此)。在(“单击”,函数()上){ 元素_id=$(this.css(“宽度”); 如果(元素id=“#登录”){ var logi

我有一个下面的代码,我想检查一个元素的id,但当我把

$(this).attr("Id");
它返回“未定义”。所以我跟他核实了一下

.css("width");
它返回:

Uncaught TypeError: Cannot read property 'defaultView' of undefined.
下面是我的代码:

函数创建登录对话框(){
$(此)。在(“单击”,函数()上){
元素_id=$(this.css(“宽度”);
如果(元素id=“#登录”){
var login_dialog=“”;
$(“body”).append(登录对话框);
日志(“logindialog正在工作”);
}否则{
控制台日志(元素id);
}
});
log(“loginquery.js正在工作”);
}
登录div
试试这个

$(“#登录”)。在(“单击”,函数(){
元素_id=$(this.attr(“id”);
如果(元素id=“#登录”){
var login_dialog=“”;
$(“body”).append(登录对话框);
日志(“logindialog正在工作”);
}否则{
控制台日志(元素id);
}
});
log(“loginquery.js正在工作”)

登录div
试试这个

$(“#登录”)。在(“单击”,函数(){
元素_id=$(this.attr(“id”);
如果(元素id=“#登录”){
var login_dialog=“”;
$(“body”).append(登录对话框);
日志(“logindialog正在工作”);
}否则{
控制台日志(元素id);
}
});
log(“loginquery.js正在工作”)


登录div
您正在变量
元素id
中存储宽度,但您将其与
\login
下一行进行比较:

element_id = $(this).css("width");
if (element_id == "#login") {...}
我不明白你的逻辑。如果要获取触发单击事件的元素的ID,请收听
event.target
并获取其ID属性。
event.target
将是触发弹出DOM的click事件的元素:

function create_login_dialog() {

  $(document).on("click", function(e) {

    // Get the ID of the element (e.target) that triggered the click event
    var element_id = e.target.id;

    // Check if the element that triggered the click event has an id of "login" (no hash!)
    if (element_id === "login") {
      var login_dialog = "<form id='login_dialog' method='post' action=''></form>";
      $("body").append(login_dialog);
      console.log("logindialog is working");
    } else {
      console.log(element_id);
    }
  });

  console.log("loginquery.js is working");
}

您正在变量
元素id
中存储宽度,但将其与
登录
下一行进行比较:

element_id = $(this).css("width");
if (element_id == "#login") {...}
我不明白你的逻辑。如果要获取触发单击事件的元素的ID,请收听
event.target
并获取其ID属性。
event.target
将是触发弹出DOM的click事件的元素:

function create_login_dialog() {

  $(document).on("click", function(e) {

    // Get the ID of the element (e.target) that triggered the click event
    var element_id = e.target.id;

    // Check if the element that triggered the click event has an id of "login" (no hash!)
    if (element_id === "login") {
      var login_dialog = "<form id='login_dialog' method='post' action=''></form>";
      $("body").append(login_dialog);
      console.log("logindialog is working");
    } else {
      console.log(element_id);
    }
  });

  console.log("loginquery.js is working");
}

试试用小写字母
.attr(“id”)
id,或者干脆
this.id
@palasH,那样做了;仍然是相同的
$(此)。在(“单击”
此处指的是什么以及
在单击中指的是什么?
控制台。将两者记录下来并检查一次。我想问题是
创建登录对话框
不知道此
指的是什么。尝试使用
创建登录对话框(obj)
然后chance
$(此)。on(“单击”
$(obj)。on(“单击”
。也发布您的html,这样我们就有更好的机会帮助您显示两个控制台的[窗口]。log($(此));尝试
。attr(“id”)
id小写或仅
this.id
@palasH,这样做了;仍然是相同的
$(此)。on(“单击”
这个
这里指的是什么,这个
里面指的是什么?
控制台。记录这两个
并检查一次。我想问题是
创建登录对话框
不知道这个
指的是什么。试着用
创建登录对话框(obj)
然后点击
$(obj)。在(“单击”
。同时发布您的html,这样我们就有更好的机会帮助您显示两个控制台的[window]。log($(此));这是有效的答案。逻辑是,当我得到“id”的“undefined”时,我想看到错误。因此我切换到了.css(“宽度”)查看它产生的错误类型。我不太了解事件处理程序的解除绑定,但我将使用这种方法。@Neo我已经更新了关于在事件绑定中使用名称空间以及如何解除名称空间事件绑定的答案。@Neo哎呀,
.off()
行有语法错误。更新:)这是有效的答案。逻辑是当我得到“id”的“undefined”时,我想看到错误。所以我切换到了.css(“width”)查看它产生的错误类型。我不太了解事件处理程序的解除绑定,但我将使用这种方法。@Neo我已经更新了关于在事件绑定中使用名称空间以及如何解除名称空间事件绑定的答案。@Neo哎呀,
.off()
行有语法错误。更新:)这个答案在运行代码段时会产生预期效果,但在我的页面上,指向库的链接是通过php inlcude文件调用的。因此,它在我的页面上不起作用。这个答案在运行代码段时会产生预期效果,但在我的页面上,指向库的链接是通过php inlcude文件调用的。因此它不起作用在我的页面上。