jquery选择器到没有id的按钮

时间:2017-10-09 13:03:48

标签: javascript jquery angularjs

我需要有一个这个按钮的选择器(我无法控制它的源代码)所以我不能为它添加一个id属性。

此外,我无法在按钮之前或之后指出任何内容,而且我也无法依赖内部文本(其多语言网站 - 因此文本可以更改)

<button class="btn btn-primary-gray btn-sm ng-binding" href=""
        ng-click="switchPanels('addresses')">Address book</button>

我想找一个带

的按钮
ng-click="switchPanels('addresses')

这是我最好的选择吗?如果是的话,我该怎么找?

4 个答案:

答案 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)

你可以通过以下两种方式实现:

&#13;
&#13;
$(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;
&#13;
&#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。