2016-05-06 3 views
3

Можно передать переменную jQuery в виде Id в Html. Например,Значение jQuery, передаваемое как id в html

$(document).on('click', '.addvideo', function() { 
    var dynamicID = $(this).attr('id'); 
}); 

Здесь я получаю текущее значение id «dynamicID». Я хочу передать это значение другой переменной, например, ниже

$('#'+dynamicID).change(function(){ 
    alert('hi'); 
    }); 

Я пробовал, как указано выше. Но я получаю ошибку "ReferenceError: dynamicID не определен". Как решить эту проблему?

+3

это в совершенно другой области, поэтому вы сталкиваетесь с проблемами. У меня есть вопрос: почему вы хотите повторно выбрать элемент, который у вас уже есть? Вы могли бы просто сохранить ссылку на узел DOM и не должны повторно выбирать. – zzzzBov

ответ

2

события изменения записи в addvideo события щелчка, то только он будет связываться:

$(document).on('click', '.addvideo', function() { 
    var dynamicID = $(this).attr('id'); 
    $('#'+dynamicID).change(function(){ 
     alert('hi'); 
    }); 
}); 
+0

Предполагая, что идентификаторы уникальны, это просто '$ (this) .change (...)' без вывода идентификатора и выбора того же элемента по id? –

0

ошибка вызвана вы пытаетесь получить доступ к переменным dynamicID откуда-то он не доступен.

Переменные в JS доступны только в функции, которая их определяет, то есть в той части, где вы пишете var something = 'value'.

поэтому в вашем примере переменная dynamicID доступна в любом месте внутри этой функции, но не вне ее.

$(document).on('click', '.addvideo', function() { 
    var dynamicID = $(this).attr('id'); 
}); 
console.log(dynamicID) //ReferenceError: dynamicID is not defined 

При попытке получить доступ к dynamicID вне функции вы получите сообщение об ошибке, потому что в принципе не существует там.

Таким образом, вы могли бы переместить функцию, использующую dynamicID внутри функции, которая определяет его:

$(document).on('click', '.addvideo', function() { 
    var dynamicID = $(this).attr('id'); 
    $('#'+dynamicID).change(function(){ 
     alert('hi'); 
    }); 
}); 

Или доступ к переменной в другом месте вы можете определить его вне функции, присвоить ему значение в поле и затем получить доступ к нему из другого места.

var dynamicID; 
$(document).on('click', '.addvideo', function() { 
    dynamicID = $(this).attr('id'); 
}); 

console.log(dynamicID) //this will log the ID value provided the element has been clicked 
0

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

$(document).on('click', '.addvideo', function() { 

    var dynamicID = $(this).attr('id'); 

    $('#'+dynamicID).change(function(){ 
     alert('hi'); 
    }); 

}); 
0

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

$(document).ready(function() { 
 
    var dynamicID = '#' + $('#yada').val(); 
 

 
    $(dynamicID).on('input', function(e) { 
 
    alert('hi'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="yada" value="yada">