jQuery.css()未应用于元素

jQuery.css() not applying to element

本文关键字:应用于 元素 css jQuery      更新时间:2023-09-26

最近我一直在尝试深入研究高级(对我来说很好)编程概念,如抽象和函数编程等。这让我开始尝试w/anon函数。

我遇到的情况是,动态生成的值没有通过使用.css({})的匿名函数应用于目标元素。我认为这与我的研究中带有宾语文字的错误翻译有关。

Chrome和FF控制台都没有出现任何错误,所以我在这里询问专家。

我做了一把小提琴,但效果不太好。我只是要链接开发站点上涉及的资源。

这是我的开发网站,我用来玩/实验和尝试新事物。

http://dev/kenstowell.net

js文件:http://dev.kenstowell.net/scripts/scripts.js

当然,一切都可以通过调试器控制台找到。

好的,下面是预期行为:

  1. (window).load上,调用initDOM()

    $(window).load(function(){ //Style Initial Dom Elements initDOM(); });

  2. initDom()内部,我试图通过调用setElemMargin()并为其提供适当的参数来设置相对于父容器的上边距。

    setElemMarg("#main-content-one", "#intro-text", "#intro-text", "margin-top");

  3. setElemMarg()获取所提供参数的高度,并使用它们来计算要在.css()映射中设置的边距。

    var setElemMarg = function(elem1, elem2, elemTrgt, propName){
    var margH = (getH(elem1) - getH(elem2)) / 2;
    $(elemTrgt).css({propName : margH});
    console.log(elem1, elem2, elemTrgt, propName, margH); }

    var getH = function(elem){ return $(elem).height(); console.log($(elem).height()); }

  4. 将计算出的裕度应用于CCD_ 12。(来自上述方法)

    $(elemTrgt).css({propName : margH});

感谢所有看过这个的人。请随意给我一些建设性的批评。也许是一些你希望在你还是一个初出茅庐的开发人员时就拥有的。:)

Ken

问题存在于setElemMarg()函数中:

var setElemMarg = function(elem1, elem2, elemTrgt, propName) {
    var margH = (getH(elem1) - getH(elem2)) / 2;
    $(elemTrgt).css({propName : margH});  // <-- Here.
    console.log(elem1, elem2, elemTrgt, propName, margH);
}

在对css()的调用中使用的文本对象语法导致jQuery尝试更新propName样式的属性,而不是名称存储在propName中的属性。

你可以使用括号符号来解决这个问题:

var styleProps = {};
styleProps[propName] = margH;
$(elemTrgt).css(styleProps);

或者简单地调用css()的两个参数形式:

$(elemTrgt).css(propName, margH);

为什么不尝试使用$(element).attr('style','css_values');

由于setElemMarg是在window.load事件的initDOM中调用的,因此不能保证jquery/dom准备就绪。您需要在文档加载事件中调用此函数