programing

jquery로 클릭 이벤트를 변경하는 방법?

subpage 2023. 9. 16. 09:04
반응형

jquery로 클릭 이벤트를 변경하는 방법?

동적 테이블을 생성하고 캘린더에 대한 클릭 이벤트를 동적으로 변경하는 js 파일을 만들었지만 동적 생성 테이블에 대한 캘린더 이미지, 이전 캘린더 이미지의 캘린더 팝업을 클릭할 때는 변경했습니다.제발 도와주세요

코드를

/***------------------------------------------------------------
* 
*Developer: Vipin Sharma
* 
*Creation Date: 20/12/2010 (dd/mm/yyyy)
* 
*ModifiedDate   ModifiedBy      Comments (As and when)
* 
*-------------------------------------------------------------*/
var jq = jQuery.noConflict();
var ia = 1;
jq(document).ready(function(){
    jq("#subtaskid1").click(function() {
        if(ia<=10){
      var create_table = jq("#orgtable").clone();
      create_table.find("input").each(function() {
        jq(this).attr({
          'id': function(_, id) { return ia + id },
          'name': function(_, name) { return ia + name },
          'value': ''               
        });
      }).end();
      create_table.find("select").each(function(){
            jq(this).attr({
                'name': function(_,name){ return ia + name }
            });
      }).end();
      create_table.find("textarea").each(function(){
            jq(this).attr({
                'name': function(_,name){ return ia + name }
            });
      }).end();
      create_table.find("#f_trigger_c").each(function(){
            var oclk = " displayCalendar(document.prjectFrm['"+ ia +"dtSubDate'],'yyyy-mm-dd', this)";                          //ERROR IS HERE
            var newclick = new Function(oclk);
            jq(this).click(newclick);
      }).end();
      create_table.appendTo("#subtbl");
      jq('#maxval').val(ia);
      ia++;
        }else{
            var ai = ia-1;
            alert('Only ' + ai + ' SubTask can be insert');
        }
    });
});

쉽게 변경할 수 있습니다.onclick다음을 사용하여 새 함수를 실행하지 않고 jQuery가 있는 요소의 이벤트:

$("#id").attr("onclick","new_function_name()");

이 선을 쓰면 당신은 실제로 변화합니다.onclick의 속성#id.

다음을 사용할 수도 있습니다.

document.getElementById("id").attribute("onclick","new_function_name()");

이전 이벤트 처리기 제거

$('#id').off('click');

그리고 새것을 붙입니다.

$('#id').click(function(){
    // your code here
});

이 게시물 업데이트(2015): unbind/bind는 jQuery 1.7+에서 더 이상 사용하지 마십시오.대신 off() 함수를 사용합니다.예:

$('#id').off('click');
$('#id').click(function(){
    myNewFunction();
    //Other code etc.
});

.click에서 비모수 함수를 호출해야 합니다. 그렇지 않으면 무시됩니다.

$('#id').attr('onclick', 'function()');

현재(2015년 7월 11일) 이 솔루션은 여전히 작동 중입니다(jquery 2.1.4). 제 생각에는 이 솔루션이 가장 효과적인 솔루션입니다.

jQuery를 사용하여 특정 on click 이벤트를 변경하려면 네임스페이스와 함께 .on() 및 .off() 함수를 사용하는 것이 좋습니다(설명서 참조).

사용하다.on()당신의 이벤트를 만들기 위해서 그리고..off()제거하기 위해서요.다음과 같은 전역 객체를 만들 수도 있습니다.g_specific_events_set = {};중복 방지:

$('#alert').click(function()
{
    alert('First alert!');
});

g_specific_events_set = {};

add_specific_event = function(namespace)
{
    if (!g_specific_events_set[namespace])
    {
        $('#alert').on('click.' + namespace, function()
        {
            alert('SECOND ALERT!!!!!!');
        });
        g_specific_events_set[namespace] = true;
    }
};

remove_specific_event = function(namespace)
{
    $('#alert').off('click.' + namespace);
    g_specific_events_set[namespace] = false;
};



$('#add').click(function(){ add_specific_event('eventnumber2'); });

$('#remove').click(function(){ remove_specific_event('eventnumber2'); });
div {
  display:inline-block;
  vertical-align:top;
  margin:0 5px 1px 5px;
  padding:5px 20px;
  background:#ddd;
  border:1px solid #aaa;
  cursor:pointer;
}
div:active {
  margin-top:1px;
  margin-bottom:0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="alert">
  Alert
</div>
<div id="add">
  Add event
</div>
<div id="remove">
  Remove event
</div>

(2019) 사용했습니다$('#'+id).removeAttr().off('click').on('click', function(){...});

나는 노력했다.$('#'+id).off().on(...), 그러나 onClick 속성이 재설정되도록 호출될 때마다 재설정되지는 않습니다.

사용합니다..on('click',function(){...});따옴표로 내 자바스크립트 기능을 모두 차단해야 하는 것을 피하기 위해서입니다.

O.P.는 이제 다음을 사용할 수 있습니다.

$(this).removeAttr('onclick').off('click').on('click', function(){ displayCalendar(document.prjectFrm[ia + 'dtSubDate'],'yyyy-mm-dd', this); });

내 div가 onClick 속성이 정적으로 설정된 상태로 설정되었을 때의 결과입니다.

<div onclick = '...'>

그렇지 않으면, 만약 내가 그것에 역동적으로 듣는 사람만 있다면, 나는 그것을 사용했을 것입니다.$('#'+id).off().on('click', function(){...});.

꺼짐('클릭') 없이 내 onClick 수신기가 추가되지 않았습니다.

@아미랄리

console.log(document.getElementById("SAVE_FOOTER"));
document.getElementById("SAVE_FOOTER").attribute("onclick","console.log('c')");

던짐:

Uncaught TypeError: document.getElementById(...).attribute is not a function

크롬으로

요소가 존재하며 콘솔에 덤프됩니다.

언급URL : https://stackoverflow.com/questions/4506219/how-to-change-onclick-event-with-jquery

반응형