замена jquery пробелов не работает в IE - PullRequest
0 голосов
/ 22 сентября 2011

Я новичок в jquery, поэтому надеюсь, что кто-нибудь поможет мне с этой проблемой.

Я работаю на Граале, и У меня есть этот объект jQuery:

var tableIds = $("#myTable tbody tr td:first-child").text().toString()

когда я предупреждаю () об этом, он имеет идентификатор некоторую информацию (первый столбец) каждой строки в myTable, например:

1 1213 2324 23123

(чтобы получить пробелы между идентификаторами, мне пришлось вручную добавить '& nbsp;' в первом тд myTable)

Теперь, когда я пытаюсь:

var idArray = new Array()
idArray = tableIds.split(" ")

это не работает, "split" просто оставляет idArray в виде строки с оригинальными пробелами

так же, как tableIds.

Мне нужно было заменить пробелы на дефисы:

tableIds = tableIds.replace(/\s/g,"-")

и затем работает split ("-"), не знаю почему ... но ТОЛЬКО в ХРОМЕ !! не в IE, и мне нужно это для работы в глупой IE.

IE продолжает показывать мне «1 1213 2324 23123», он не нашел пробелы для замены и просто оставил это так.

Кто-нибудь знает это? Надеюсь, вы сможете мне помочь, если нет, спасибо, в любом случае.

Ответы [ 5 ]

0 голосов
/ 22 сентября 2011

Спасибо всем! Я не пытался заменить неразрывные пробелы простыми пробелами, потому что добавление пробелов вручную в моем TD не было хорошей идеей.

но, как сказали Стивен, nnnnnn и Chazbot, это помогло!

var ids = [];
$("#myTable tbody tr td:first-child").each(function () {
    ids.push($(this).text());
})

Я не знал, что вы можете "каждый" подобного рода объекты jquery, я должен был это знать Что-то новое для изучения.

Еще раз спасибо!

0 голосов
/ 22 сентября 2011

Вы можете извлечь содержимое первой <td> каждой строки, используя jQuery's .each(), чтобы перебрать все результаты вашего исходного селектора, поместив каждое значение в массив по ходу:

var idArray = [];

$("#myTable tbody tr td:first-child").each(function() {
   idArray.push($(this).text());
});

Я не знаю, что случилось с регулярным выражением, не находящим пробелы, если IE не считает, что неразрывные пробелы не являются пробелами?

0 голосов
/ 22 сентября 2011

Попробуйте заменить &nbsp; пробелы обычными пробелами после каждого идентификатора.

0 голосов
/ 22 сентября 2011

Хммм ... Я мог бы ошибиться, допустив вашу ошибку, но потерпите меня здесь:

Звучит так, как будто вы устанавливаете ID каждого td, который хотите выбрать, чтобы бытьстрока с кучей пробелов в ней (или дефисы, или что-то еще).

Синтаксис селектора jQuery построен так, что вам не нужно это делать.Вы должны быть в состоянии выбрать нужные элементы с вышеуказанным синтаксисом, а затем перебрать их с помощью цикла each ().Учтите это:

var anArray = [];

$("#myTable tbody tr td:first-child").each(function(){
    //This code will run for every element matched by the above selector
    var contentsOfCell = $(this).text();
    anArray.push(contentsOfCell);
});

Надеюсь, это поможет!

0 голосов
/ 22 сентября 2011

Я думаю, вы могли бы ошибиться. Если вы хотите получить массив идентификаторов элементов, которые jQuery выбрал с помощью этого селектора, попробуйте сделать это вместо этого:

var ids = [];
$("#myTable tbody tr td:first-child").each(function () {
    ids.push($(this).attr('id'));
});
//now the ids array will have all of the ID's of the elements in it

'each' запускает переданную функцию для каждого элемента, который был выбран ... так что вы можете очень надежно получить все идентификаторы. Возможно, есть более оптимизированные способы, но этот метод никогда не подводил меня.

Изменить: после перечитывания я понял, что вы, вероятно, ищете текстовый идентификатор, который вы дали .. что-то вроде ..

| 1 | dog    | $5
| 2 | cat    | $2
| 3 | fish   | $1.10

Итак ... используя ту же идею, что я написал выше ...

var ids = [];
$("#myTable tbody tr td:first-child").each(function () {
    ids.push($(this).text());
});
//ids will be [1, 2, 3]
...