jQuery Как продолжить Javascript до новой строки? - PullRequest
8 голосов
/ 20 сентября 2011

У меня такой давний вопрос, и хотя он может показаться мне нубом - это нормально, так как я один.

Как продолжить новую строку в селекторах jQuery? Я понимаю, что новые строки JavaScript просто

(\) single backslash

Например

var someString = 'abc\
defghi';
alert(someString);

Тем не менее, используя jQuery - это не работает, когда я перечисляю длинные селекторы? т.е.

$('#id, .class, .class1, .class2, .class3, .class4, .class5, \
   .class6, .class7').click(function() {
      //some stuff
});

Может кто-нибудь пролить свет, как решить эту проблему?

Ответы [ 7 ]

16 голосов
/ 20 сентября 2011
$('#id, .class, .class1, .class2, .class3, .class4, .class5, ' + 
  '.class6, .class7').click(function() {
      //some stuff
});

http://jsfiddle.net/X6QjK/

3 голосов
/ 20 сентября 2011

Что между $() это просто строка. С учетом сказанного, как бы вы разбили строку на две части?

$('big selection text' +
  'more selection' + 
  'more selection still')

Кроме того, вы можете добавить свою коллекцию после первоначального выбора:

$('big selection text')
    .add('more selection')
    .add('more selection still')
2 голосов
/ 20 сентября 2011

jQuery - это JavaScript.Не обманывайте себя, думая, что есть разница.Ваш код работает со всем в одной строке?

Я предполагаю, что ваш селектор фактически не выбирает никаких элементов (элементы DOM, вероятно, не существуют, когда вызывается селектор).

0 голосов
/ 18 июля 2019

Сегодня другой вариант - использование литералов шаблона https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

$(`#id, 
   .class, 
   .class1, 
   .class2, 
   .class3, 
   .class4, 
   .class5,
   .class6, 
   .class7`).click(function() {
  //some stuff
});
0 голосов
/ 20 сентября 2011

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

Мой совет - упростить вещи, дав каждому элементу, который вы хотите, применить к одному общему классу, что сведет на нет необходимостьиметь чрезмерно длинные строки селектора, подобные этому.

Но если вы не можете этого сделать, то вы можете решить проблему, разбив строку на отдельные секции и используя + для их объединения, вместо продолжения строкичерез линию.

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

Вы можете просто закрыть строку и использовать оператор + для добавления строк.

$('#id, .class, .class1, .class2, .class3, .class4, .class5,' +
   '.class6, .class7').click(function() {
      //some stuff
});

Это должно работать.

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

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

var s = "This is a\n" +
        "multiline\n" +
        "string.\n";

Обратите внимание, что символы новой строки (\n) требуются только в том случае, если вы действительно хотите использовать новые строки в строке. Ваш пример будет выглядеть так:

$('#id, .class, .class1, .class2, .class3, .class4, .class5, ' +
  '.class6, .class7').click(function() {
    //some stuff
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...