我需要有一个这个按钮的选择器(我无法控制它的源代码)所以我不能为它添加一个id属性。
此外,我无法在按钮之前或之后指出任何内容,而且我也无法依赖内部文本(其多语言网站 - 因此文本可以更改)
<button class="btn btn-primary-gray btn-sm ng-binding" href=""
ng-click="switchPanels('addresses')">Address book</button>
我想找一个带
的按钮ng-click="switchPanels('addresses')
这是我最好的选择吗?如果是的话,我该怎么找?
答案 0 :(得分:1)
$("btn.btn-primary-gray.btn-sm.ng-binding")?
通过类的组合进行选择。但这不是最好的主意,因为多个按钮可以具有相同的组合。
$("button[ng-click=\"switchPanels('addresses')\"]")
注意到编辑:这是你在其中提出的问题。但是,请记住,只要你在ng-click中更改了任何内容,或者决定使用其他内容进行该事件,它就无法工作。
我不确定我会这样结合自己。 您正在使用该元素的jQuery选择器将事件(on-action)绑定混合到控制器的函数中。这听起来像一个糟糕的主意。
好的问题,因为你使用Angular,为什么你需要jQuery在第一位? Angular是配置框架的约定,并且更喜欢以自己的方式执行操作,而不是使用jQuery来完成相同的操作。
确保您已尝试以Angular方式执行此操作。
答案 1 :(得分:0)
你可以通过以下两种方式实现:
$(document).ready(function(){
$('button').on('click', function(){
if($(this).attr('ng-click') == "switchPanels('addresses')"){
console.log('address btn')
}
});
});
$('button[ng-click="switchPanels(\'addresses\')"]').html('Address Book text changed')
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn btn-primary-gray btn-sm ng-binding" href=""
ng-click="switchPanels('addresses')">Address book</button>
&#13;
答案 2 :(得分:-1)
如果想要尽可能精确,可以为类和ng-click
参数创建一个选择器。
这看起来像这样:
button[ng-click="switchPanels('addresses')"].btn.btn-primary-gray.btn-sm.ng-binding
概念证明:
$(function() {
console.log($("button[ng-click=\"switchPanels('addresses')\"].btn.btn-primary-gray.btn-sm.ng-binding"));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn btn-primary-gray btn-sm ng-binding" href="" ng-click="switchPanels('addresses')">Address book</button>
答案 3 :(得分:-2)
按钮的父母是否有id?
如果是,那么:
var sender = $("#parent_id > button");
在父母的父母中搜索parent_id。