Автор Тема: JQuery получение идентификатора кнопки [решено]  (Прочитано 3102 раз)

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 550
А в консоли браузера нет error ?
оно вообще-то case sensitive и ф-я такая должна быть - removeAttr


Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Ммм... ну проблема в этой строчке.
В консоли:
Uncaught TypeError: $(...).removeattr is not a functionДа вообще снятие как-то странно работает, через раз и с разными командами:
$(".check").removeattr("checked");
$(".check").removeattr("checked", "false");
$(".check").prop("checked", "false");
$(".check").attr("checked", "false");
и все через раз. Не знаю как правильно будет...
Сноси Винду, переходи на Линукс ! :)

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 550
removeAttr - "A" - заглавная

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
removeAttr - "A" - заглавная
:-o
Вроде помогло, спасибо!
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
И осталось самое главное, как теперь собрать переменную id сюда:
$("сюда").removeattr("checked");Там должно быть так
.id[0]_id[1]_[0-9]*В начале точка, потом значения из переменно через _ и в конце тоже _ и набор любых цифр.
Пока попробовал так, не получилось:
$("."+id[0]+"_"+id[1]+"_93").prop("checked", "true");(для упрощения пока взял в конце 93)
« Последнее редактирование: 21.07.2015 00:00:40 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 550
ну выберите все button:
$('input[type=button]').foreach(function(){
.. и внутри проверьте соответствие id Вашему регулярному выражению
});
ну или я не понимаю в принципе что Вы делаете... если Вам нужно выбрать все кнопки на форме которой принадлежит кликнутая кнопка то смотрите тот код который я в самом начале приводил - он именно это делает.

$(this).closest('form') // ищет ближайшую форму родителя
.find('input[type=button]') // ищет у нее всех потомков-input типа кнопка
.foreach(function() { //вызывается для каждогт найденного элемента
что-то сделать с каждым элементом
});
« Последнее редактирование: 21.07.2015 00:10:39 от ASte »

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
ASte
У меня несколько вкладок на форме, на каждой есть эти 3 кнопки и список ниже для каждой вкладки свой!, рядом с каждой позицией в списке есть чекбокс, вот в этом списке мне и нужно чтоб осуществлялся выбор. При этом выделение/снятие должно быть в рамках одной вкладки, сейчас у меня на всех сразу всё отрабатывает.

Сейчас попытаюсь.
Сноси Винду, переходи на Линукс ! :)

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 550
Да, если нужно отбирать чекбоксы то
$('input[type=checkbox]')

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 550
Если вкладка это div тогда выбираете .closest('div') вместо .closest('form')

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Хммм...
Мне нужно внутрь вот этого вставлять:
$(".btn_control input").click(function(e){
        var id = $(this).data("id");
        var id = id.split("_");
        switch (id[0]) {
    case "select" :
сюда ???
$(".check").prop("checked", "true");
break;
    case "unselect" :
сюда ???
$(".check").removeAttr("checked");
break;
        }
    });
?
Я вообще запутался окончательно...
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Вот так ошибка:
$(".btn_control input").click(function(e){
        var id = $(this).data("id");
        var id = id.split("_");
        switch (id[0]) {
    case "select" :
$(this).closest("form").find("input[type=checkbox]").foreach(function() {
var tmp = $(this).data("id");
var tmp = tmp.split("_");
if (tmp[1] == id[1]) {
    $(".check").prop("checked", "true");
}
});
break;
    case "unselect" :
$(".check").removeAttr("checked");
break;
        }
    });
Uncaught TypeError: $(...).closest(...).find(...).foreach is not a function
Сноси Винду, переходи на Линукс ! :)

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 550
$(".check").prop("checked", "true");
заменить на
$(this).closest('form')  // или closest('div')
.find('input[type=checkbox]')
.each(function() {
$(this).prop("checked", "true"); //this тут уже чекбокс
});
во втором случае аналогисно
Перепутал - вместо .foreach следует читать .each


Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
ASte
С ума сойти -- работает! :-) Завтра проверю на проекте, сейчас тестовый создал, тут нет вкладок.
Только условие как выше писал добавил ещё.
Спасибо!

Осталось мне разобраться с кнопкой dwnld... ну это уже совсем другая история...
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
проверю на проекте
Ну в общем не работает почему-то...
Вообще такое событие не обрабатывается:
$(".btn_control input").click(function(e){
...
});
В ответ тишина полная.
Я даже так сделал:
$(".btn_control input").on("click", function(e){
...
});
Типа универсальный метод, потому что у меня этих элементов то нет, они динамически генерируются через php скрипт.
Дак вот, если как выше написал вызывать событие нифига не срабатывает, а вот если так как было изначально:
<input type="button" name="select_25" value="Выделить все" onclick = "SelectAll()">То есть самой кнопке прописать onclick, то всё отрабатывает. НО тогда не отрабатывает получение data-id, то есть так в ответ получаю undefined:
function SelectAll() {
var id = $(this).data("id");
alert(id);
}
Я не знаю даже как поступить...

В php срипте у меня может по-тупому сделано, просто в цикле многократно заносится в переменную такая строка, а потом эта переменная выводится через echo ...
<input type="button" name="select_25" value="Выделить все" data-id="select_25">Естественно 25 это переменная, она меняется.
Ну вот так...
« Последнее редактирование: 21.07.2015 10:47:58 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 550
Как-то так?
$(document).ready(function() {
console.log('init');
$(".btn_control input").on("click", function(e){
   console.log("onclick");
...
   });
});

);