Возможно дифференцировать селекторы только с $ (this)?

У меня есть этот кусок кода:

$('#btn_1, #btn_2').on('click', function() {    

  // Button 1
  let btn1conSpan = $('#btn_1 span');
  
  // Button 2
  let btn2conSpan = $('#btn_2 span');
  
  console.log(btn1conSpan.text());
  console.log(btn2conSpan.text());  
});
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<button id="btn_1"><span>Span1</span> Button 1</button>
<button id="btn_2"><span>Span2</span> Button 2</button>

Который функционирует правильно, сейчас мой вопрос, когда я хочу использовать селектор $(this):

Возможно каким-то образом знания, который id's на него нажали, (не используя условий (if ( .. )))? Таким образом что он показал результат как первый пример?

Второй пример показывает идею, которая у меня есть, но очевидно не дает желанный результат:

$('#btn_1, #btn_2').on('click', function(){
  
  let $this       = $(this);

  // Button 1
  let btn1conSpan = $this.find('span'); // Que sea el selector #btn_1
  
  // Button 2
  let btn2conSpan = $this.find('span'); // Que sea el selector #btn_2
  
  console.log(btn1conSpan.text()); // Resultado deseado: Span1
  console.log(btn2conSpan.text()); // Resultado deseado: Span2 
});
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<button id="btn_1"><span>Span1</span> Button 1</button>
<button id="btn_2"><span>Span2</span> Button 2</button>

Желанный результат примера 2 был:

Span1
Span2

EDIT:

Я вижу, что он - немного обманщик понимания вопроса.

Я упрощаю возможное максимальное:

$('#btn_1, #btn_2').on('click', function() {    

  // Quiero seleccionar con $(this) de esta forma

  $(this).elemento1; // Que sea #btn_1
  $(this).elemento2; // Que sea #btn_2
});

Есть способ делать это таким простого?

4
задан 18.02.2017, 01:57
0 ответов

En teoría, sólo con $ (this) no se podría hacer. это это элемент управления объектами, предоставленный типом информации о порядке выбора элементов, por lo que desde btn_1 no se podría saber si btn_2 es parte del selector para hacer click en e (y наоборот).

С этой точки зрения, в том числе, когда речь идет о паре лет назад, вы должны сделать все, что вам нужно ... даже если вы не согласны с этим (tampoco en exceso).

En version). Антигуа-де-Джуери установил селектор , который, как полагают, исключает партию из 1.7 и исключает ее из версии 1.9 (квартира не имеет смысла).

Отра opción, aunque personalmente la sympraría hacer algo de trampa, Вы можете выбрать один из нескольких вариантов (нажмите здесь), чтобы узнать, что вы делаете (и что вы делаете ). ). Usando на puedes pasar datos opcionalmente:

.on( events [, selector ] [, data ], handler )

que se leerán en el набор данных . В этом разделе указан этот , в частности, "trampa", pero funciona y sólo trcías que que escribir el selector en un sitio:

 var miSelector = '# btn_1, # btn_2'; $ (miSelector) .on ('click', {selector: miSelector}, function (e) {$ (e.data.selector) .each (function () {console.log ($ (this) .find ("span) ") .text ());});}); 
 

                  

Espero sea lo que buscas.

 $ ('# btn_1, # btn_2'). On ('click', function (e) {let val = $ (this) .find ('span'). Text). (); let id = $ (this) .attr ('id'); console.log (val); console.log (id);}); 
 

Теги

Похожие вопросы