program tip

jquery로 onclick 이벤트를 변경하는 방법은 무엇입니까?

radiobox 2020. 11. 19. 08:02
반응형

jquery로 onclick 이벤트를 변경하는 방법은 무엇입니까?


동적 테이블을 만들고 캘린더의 클릭 이벤트를 동적으로 변경하지만 동적 생성 테이블의 캘린더 이미지, 이전 캘린더 이미지의 캘린더 팝업을 onclicking하는 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()");


이전 이벤트 처리기 제거

jQuery('#id').unbind('click');

그리고 새로운 것을 부착하십시오

jQuery('#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를 함께 이벤트 onclick을 하나의 특정을 변경하려는 경우, 당신은 더 나은 기능을 사용 () CSTE 연구진.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>


(2017) 사용 $('#'+id).removeAttr().off('click').on('click', function(){...});

시도 $('#'+id).off().on(...)했지만 재설정을 위해 호출 될 때마다 onClick 속성을 재설정하는 것은 작동하지 않습니다.

나는 .on('click',function(){...});모든 자바 스크립트 기능을 인용하지 않아도됩니다.

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

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

이것이 나를 위해 온 곳은 내 div가 정적으로 설정된 onClick 속성으로 설정되었을 때입니다.

<div onclick = '...'>

Otherwise, if I only had a dynamically attached a listener to it, I would have used the $('#'+id).off().on('click', function(){...});.

Without the off('click') my onClick listeners were being appended not replaced.


@Amirali

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

throws:

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

in chrome.

Element exists and is dumped in console;

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

반응형