获取父类并在jquery中触发

时间:2016-02-08 15:15:52

标签: javascript jquery css image jquery-selectors

我想通过单击按钮或图像来触发父类的事件。

addImage

这里重复了imageclick个类,当我点击photopicker类时,我想触发相应列表的('.PhotoPicker').trigger('click'); 。我使用它时效果很好,

<input type="checkbox" ng-model="sink" data-ng-change="onSinkChanged(sink)">

$scope.onSinkChanged = function(sink) {
    // your logic here
}

请帮助我们!

5 个答案:

答案 0 :(得分:2)

他们不是彼此的祖先/后代。

您需要使用closest前往LI(最近的共同祖先),然后使用find向下搜索:

$(this).closest('li').find('.PhotoPicker').trigger('click');

您也可以将trigger('click')简化为.click(),因为它在幕后完全相同:

$(this).closest('li').find('.PhotoPicker').click();

您可以使用兄弟选择器,但这对于在DOM中进行的更改不那么健壮。更安全地使用共同的祖先并找到。例如,如果为了样式目的而更改布局并且在元素周围添加了额外的DIV,则兄弟搜索将失败。

答案 1 :(得分:0)

最近看起来在祖先。你想横向走向兄弟姐妹。

可以使用prev()siblings()

$(this).prev().trigger('click');

或者

$(this).siblings('.PhotoPicker').trigger('click');

答案 2 :(得分:0)

$(".imageclick").prev().trigger("click");

你可以在这里使用prev选择器。 https://api.jquery.com/prev/

答案 3 :(得分:0)

您可以向上移动DOM以找到其父母,然后搜索所需的孩子

<li class="addImage">
    <input class="PhotoPicker" type="file" accept="image/*" capture="camera" onchange="angular.element(this).scope().file_changed(this)" />
    <a class='imageclick' onclick="someFunction()">
        <img ng-src="images/add-photo.png">
    </a>

JS

 function(){
         $(this).parent().find('.PhotoPicker').trigger('click');
}

jsfiddle

答案 4 :(得分:0)

你应该理解closest的使用,它的工作是通过它的父元素,而不是SIBLINGS,在你的标记中,PhotoPicker类是兄弟元素,而不是父/祖先元素。

addImageimageclick的父/祖先元素。因此,您可以使用closest这样访问此内容;

$(this).closest('.addImage')

然后您可以使用find函数获取其中的PhotoPicker元素,如:

$(this).closest('.addImage').find('.PhotoPicker').first().trigger('click')