追加后从HTML标记中获取id值

时间:2015-10-31 18:31:13

标签: jquery dynamic event-handling

我创建了一个带有append()

的按钮
var $itembtn = $('<figure data-groups=\'["'+ group +'"]\'>
            <button class="loadmorebtn" id="'+ group +'">Load more items '+ group  +'</button>
        </figure>');
$grid.append($itembtn);

按钮被创建。

<button id="graphics" class="loadmorebtn">Load more items graphics</button>

之后我想得到它的身份。

 function() {
        $('.loadmorebtn').on('click', function() {
         alert(this.id); 

 },

ID为空。

如果按钮直接放在html中就可以了。

3 个答案:

答案 0 :(得分:1)

试试这个:

JQUERY .on() METHOD

如上所述,该按钮是动态追加的字段。

在初始加载期间不在DOM中,这就是为什么你无法获得id。

您应该使用jQuery .on() 方法来获取ID。

$(document).ready(function(){ 
   $('body').on('click','.loadmorebtn',function().                     {
      alert($(this).attr('id'));
  }); 
});

你也可以使用alert(this.id);

希望这有用。

答案 1 :(得分:1)

该按钮被动态添加到DOM。您需要使用事件委派。

static void handleCUDAError(cudaError_t err, const char *file, int line)
{
    if (err != cudaSuccess) {
        printf("%s in %s at line %d\n", cudaGetErrorString(err), file, line);
        exit(EXIT_FAILURE);
    }
}

#define CUDA_ERROR_CHECK(err) (handleCUDAError(err, __FILE__, __LINE__ ))

__global__ void echoKernel(volatile int* semaphore)
{
    *semaphore = 1;

    __threadfence_system();
}

int main()
{
    CUDA_ERROR_CHECK(cudaSetDevice(0));
    CUDA_ERROR_CHECK(cudaSetDeviceFlags(cudaDeviceMapHost));

    volatile int var = 0;
    volatile int *devptr;

    CUDA_ERROR_CHECK(cudaHostRegister((int*)&var, sizeof (int), cudaHostRegisterMapped));
    CUDA_ERROR_CHECK(cudaHostGetDevicePointer(&devptr, (int*)&var, 0));

    echoKernel <<< 1, 1 >>> (devptr);

    while (var == 0) ;

    CUDA_ERROR_CHECK(cudaDeviceSynchronize());

    CUDA_ERROR_CHECK(cudaHostUnregister((int*)&var));
    CUDA_ERROR_CHECK(cudaDeviceReset());

    return 0;
}

答案 2 :(得分:0)

$(document).ready(function(){
    $(document).on('click','.loadmorebtn',function(){
       //code here
       //alert(this.id);
       alert($(this).attr('id'));
    });
});