2017-10-09 58 views
-3

我需要有一個選擇器到這個按鈕(我沒有控制它的源代碼),所以我不能添加一個id屬性。jquery選擇器到一個沒有ID的按鈕

也沒有什麼,我可以按鈕之前或之後指向,也是我不能依靠內部文本(其多語言的位點,使文本可以改變)

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

我認爲尋找一個按鈕與

ng-click="switchPanels('addresses') 

這是我最好的選擇?如果是這樣,我該如何尋找它?

+0

你的[屬性選擇](HTTPS://api.jquery。com/attribute-equals-selector /) –

+1

'$(「button [ng-click = \」switchPanels('addresses')\「]」)'should do it – abhishekkannojia

+0

@abhishekkannojia未捕獲ReferenceError:賦值中的左手邊無效。它是我運行時得到的錯誤 –

回答

-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>

+0

我將使用此選擇器'$(「button [ng-click = \」switchPanels('addresses')\「]」 )'後面的課不用媽媽。謝謝! –

+0

你也可以使用'$('... [「...」]')' – Rajesh

+0

當然! (請點擊[ng-click =「switchPanels('addresses')」]'到'$(「按鈕[ng-click = \」switchPanels('addresses')\ 「]' –

1
$("btn.btn-primary-gray.btn-sm.ng-binding")? 

通過類別的組合來選擇。但這不是最好的想法,因爲多個按鈕可以有相同的組合。

$("button[ng-click=\"switchPanels('addresses')\"]") 

注意到編輯:這就是你問的。但是,只要您在ng-click中更改任何內容,或者決定與其他事件一起使用,它就不會起作用。

我不確定我會像那樣將自己情侶聯繫起來。 您正在將事件(on-action)綁定與控制器的函數與元素的jQuery選擇器相混合。這聽起來像一個可怕的想法。

因爲您正在使用Angular,所以您需要使用jQuery嗎? Angular比配置框架約定更喜歡以自己的方式做事,而不是使用jQuery來完成相同的事情。

確保你已經嘗試了這種角度的方式。

+0

我不使用'angularJS',並且在我需要選擇的應用程序中 - 它使用angularJS - 我沒有其他選擇,因爲它們不是相同的應用程序 –

+0

這很奇怪情況。誰決定通過相同的HTML開發2個不同的應用程序?基本上,只要有人爲第一個應用編輯HTML,第二個應該會崩潰,反之亦然。當我做這樣的事時,我可以想到很少的情況。特別是當他們瀏覽完全相同的HTML塊時。什麼是讓第一個應用程序的人決定讓我們說重命名他的ng-click函數,或參數,甚至刪除整個按鈕的其他東西? – DanteTheSmith

+0

是 - 「一個奇怪的情況」,但它是這樣的...應用程序遵循這種模式:有一個基礎應用程序(使用角度),其他應用程序是「擴展」,以添加功能基本應用程序,客戶購買基本應用程序,從那裏他可以添加擴展基本應用程序的「能力」。 –

-2

執行按鈕的家長有ID?

如果是,那麼:

var sender = $("#parent_id > button"); 

在父母的父母搜索一個PARENT_ID。

+0

請正確閱讀該問題*我無法指出按鈕之前或之後的任何內容* – Rajesh

0

你能做到這2種方式:

$(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')
<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>