jQuery值在html中作为id传递

jQuery value passing as a id in html

本文关键字:id 传递 值在 html jQuery      更新时间:2023-09-26

可以在Html中传递一个jQuery变量作为Id。例如

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

这里我得到了当前点击的id值"dynamicID"。我想把这个值传递给另一个变量,比如下面的

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

我试过了。但我收到错误"ReferenceError:dynamicID未定义"。如何解决这个问题?

在addvideo点击事件中写入更改事件,则只有它会绑定:

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

错误是由于您试图从某个不可用的地方访问变量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

出现该错误的原因是您处于不同的范围,这意味着不会定义dynamicID。尝试将其添加到相同的范围中,如下所示:

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

我不知道你打算如何获取动态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">