У меня есть три кнопки. Идея состоит в том, чтобы изменить текст на кнопках с идентификатором № 11 и № 12 при нажатии кнопки № 1.

$(document).ready(function() {
    var dict = {#1: ['#11', '#12']}

    $('button').click(function () {
        var k = dict['#'+$(this).attr('id')]

        for (c in k){
            var m = k[c]
            $(m).button('it works')
        }
    })
});

Теперь проблема в том, что если я позвоню alert(m), я получу правильный результат, но он просто не работает с $(m).button('it works'). Есть идеи почему?

1
Testing man 10 Янв 2017 в 21:53

3 ответа

Лучший ответ

Пример HTML, связанный с вашим кодом:

<button id="1">
  Ohay
</button>

<button id="11">
  hehe
</button>

<button id="12">
  haha
</button>

Правильный JavaScript:

$(document).ready(function() {
  var dict = {'#1': ['#11', '#12']}

  $('button').click(function () {
      var k = dict['#'+$(this).attr('id')]
      for (c = 0; c < k.length; c++){
          var m = k[c]
          $(m).text('it works')
      }
  })
});

Прототип .button , насколько я знаю, не является стандартным прототипом jQuery, поэтому я, вероятно, подозреваю, что вы хотите использовать вместо него .text .

Кроме того, имейте в виду, что вместо этого вы должны изменить цикл for..in с помощью регулярного выражения for (поскольку вы зацикливаете массив , а не объект ), несмотря на то, что это будет работать в данном конкретном случае , проверьте это для справки: почему я не должен использовать for ..in с массивами

Рабочая скрипка:

https://jsfiddle.net/gLnfo2h8/

4
Community 23 Май 2017 в 12:33

Если m является целью button, все, что вам нужно, это установить value

jQuery has no function called button. the right solution would be:
$(m).text('some text')

Если кнопка на самом деле является <input type='button', поэтому вам может потребоваться сделать следующее:

$(m).val('some text')

Решение будет таким:

$(document).ready(function() {
var dict = {#1: ['#11', '#12']}

$('button').click(function () {
    var k = dict['#'+$(this).attr('id')]

    for (c in k){
        var m = k[c]
        $(m).val('it works')
    }
})
});
1
Ramy M. Mousa 10 Янв 2017 в 19:03

Используйте $(m).text('it works'), .button() не является функцией jQuery

3
JB06 10 Янв 2017 в 18:57