Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery参数中调用DOM_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 在jQuery参数中调用DOM

Javascript 在jQuery参数中调用DOM,javascript,jquery,dom,Javascript,Jquery,Dom,我还在学习jQuery,我正在创建一个非常简单的jQuery函数,它使用一个参数,然后在参数中调用div。但是它不起作用。我在控制台中没有收到任何错误。这是我的密码: function square(oneDiv) { var divWidth = oneDiv.width(); oneDiv.height(divWidth); } square($('.art')); 任何帮助都将不胜感激。试试这个。还要确保在dom中加载带有class='art'元素的元素后加载查询代码

我还在学习jQuery,我正在创建一个非常简单的jQuery函数,它使用一个参数,然后在参数中调用div。但是它不起作用。我在控制台中没有收到任何错误。这是我的密码:

function square(oneDiv) {
    var divWidth = oneDiv.width();
    oneDiv.height(divWidth);
}

square($('.art'));

任何帮助都将不胜感激。

试试这个。还要确保在dom中加载带有class='art'元素的元素后加载查询代码

function square(oneDiv) {
    var myDiv = $(oneDiv);
    var divWidth = myDiv.css('width');
    myDiv.css('height', divWidth);
}

square('.art');

有几件事可能会出问题

1此代码运行时,DOM可能不存在。在这种情况下,将函数调用包装在$document.ready中,这样可以确保函数运行时.art将存在:

function square(oneDiv) {
  var divWidth = oneDiv.width();
  oneDiv.height(divWidth);
}

$(document).ready(function () {
  square($('.art'));
});
2.艺术元素可能有一个显示:内联样式。确保它是display:block或display:inline块。将忽略内联元素上的高度和宽度样式


示例:

如果选择器“.art”与文档中的任何内容都不匹配,则代码将不会执行任何操作,也不会出现任何错误。您可以通过记录oneDiv.length来检查这一点。控制台中有哪些错误?为什么?将jQuery对象作为参数传递给函数,然后使用其方法完全可以。顺便说一句,css的“宽度”!=。宽度为了可重用性,将其更改为将jQuery对象作为参数而不仅仅是类/id不是更好吗?@natzim,我认为“获取”元素的方法应该由方法决定,这样您可以重构方法,但拥有接口,即squareString;相同的。例如,您可能会停止使用jquery而使用mootools!您仍然可以使用squareString并只重构方法。如果解释了为什么它更好,我完全支持建议更好的替代方案,但OP问题中的代码没有错,所以重构并不能解释为什么它不能按预期工作。@好的一点是,我想这取决于OP想使用函数做什么。