2012-05-17 3 views
2

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

Это первый сценарий

$(CloneTarget).find(':input[name="' + MainName + '"]').attr('name', NewSelectName); 

И второй один:

$(CloneTarget).find(':input').each(function() { 
    if ($(this).attr('name') == MainName) { 
     $(this).attr('name', NewSelectName); 
    } 
}); 

Где проблема с первой?

Редактировать

Также я использую это:

$(CloneTarget).find(':input[id="' + MainId + '"]').attr('id', NewSelectId); 

И каждая вещь работала нормально я действительно запутался здесь, я должен упомянуть MainName и MainId настолько похожи, как: MainName = Model.Phones[0] и MainId = Model_Phones[0] является разница примерно . персонаж или что-то еще?

+0

Что «не работает» в первом скрипте? – Joseph

+0

Можете ли вы также дать часть HTML, чтобы быть понятным. – Niranjan

+0

@Saeid, символ '.' может быть ошибочно принят за начало селектора классов, однако, похоже, это не так, как в jQuery 1.7. Используете ли вы более раннюю версию библиотеки? –

ответ

7

Да, есть разница. Второй фрагмент кода выполняет сравнение строк между атрибутом элемента name и значением MainName. Первый непосредственно вводит значение MainName в селектор Attribute Equals.

Таким образом, первый фрагмент кода потерпит неудачу, если MainName случается содержать:

  • одна кавычки ',
  • двойной кавычка ",
  • символа, который требует побег селекторов, например как [ или \.
+0

Это потрясающе, я думаю, что мое 'MainName' похоже на ваше описание, но я использую его с Id без каких-либо проблем, я обновляю вопрос – Saeid

+0

Но вы не должны указывать имена с этими кавычками и экранирование символов в качестве имен ввода. Это первое. – Niranjan

+1

@ngen, теоретически, да, но разработчики PHP иногда называют флажки или переключатели в группе 'something []', чтобы серверный код получал массив, содержащий значения, представленные для этих элементов. –

Смежные вопросы