如何访问传递给jquery中的函数的对象的父对象

时间:2013-11-18 16:18:26

标签: jquery function parent

我有以下内容:

<div id="container">
</div>

var img = $("<img/>")
        .attr("src", "http://www.rv-trips.com/wp-content/uploads/2012/08/olympicnationalpark-2.jpg")
        .load(function() {
            $("#container").append($(this));
        })

function someFunction(something) {
    something.parent().hide();
}

someFunction(img);

它没有按预期工作。我想通过parent()从函数内访问“img”的父级,但是不起作用。然而,我可以通过something.hide();隐藏图像本身但这不是我想要的。我显然也可以将父节点传递给函数,但我认为必须有一种方法来实现这一点,类似于我尝试过的方式。我对javascript和jquery很新,我想我想念一些有趣的概念,我想了解。

非常感谢提前。

2 个答案:

答案 0 :(得分:0)

var img = $('<img/>', {
              src: 'http://www.rv-trips.com/wp-content/uploads/2012/08/olympicnationalpark-2.jpg'
          }).appendTo('#container');

function someFunction(something) {
    something.parent().hide();
}

someFunction(img);

在我看来你应该放弃onload功能并像上面那样去做,特别是因为你试图使用的功能已被弃用,但我会再试一次,并添加一个等待图像的解决方案加载:

var img = new Image();
img.onload = function() {
    document.getElementById('container').appendChild(this);
    someFunction(this);
}
img.src = 'http://www.rv-trips.com/wp-content/uploads/2012/08/olympicnationalpark-2.jpg';

function someFunction(something) {
    $(something).parent().hide();
}

答案 1 :(得分:0)

在您的示例中,父级已知,您可以使用

$( “#容器”)隐藏();

你有一个“更好”的例子,其中父母不知道吗?