我想通过单击按钮或图像来触发父类的事件。
addImage
这里重复了imageclick
个类,当我点击photopicker
类时,我想触发相应列表的('.PhotoPicker').trigger('click');
。我使用它时效果很好,
<input type="checkbox" ng-model="sink" data-ng-change="onSinkChanged(sink)">
$scope.onSinkChanged = function(sink) {
// your logic here
}
请帮助我们!
答案 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');
}
答案 4 :(得分:0)
你应该理解closest
的使用,它的工作是通过它的父元素,而不是SIBLINGS,在你的标记中,PhotoPicker
类是兄弟元素,而不是父/祖先元素。
但addImage
是imageclick
的父/祖先元素。因此,您可以使用closest
这样访问此内容;
$(this).closest('.addImage')
然后您可以使用find
函数获取其中的PhotoPicker
元素,如:
$(this).closest('.addImage').find('.PhotoPicker').first().trigger('click')