it-swarm.dev

محاكاة نقرة على عنصر "a" باستخدام javascript/jquery

أحاول محاكاة نقرة على عنصر. HTML لنفسه هو على النحو التالي

<a id="gift-close" href="javascript:void(0)" class="cart-mask-close p-abs" onclick="_gaq.Push(['_trackEvent','voucher_new','cart',$(this).attr('rel')+'-mask_x_button-inaction']);" rel="coupon">&nbsp;</a>

كيف يمكنني محاكاة نقرة عليها. لقد حاولت

document.getElementById("gift-close").click();

لكن لا تفعل أي شيء

56
user2373137

باستخدام jQuery: $('#gift-close').trigger('click');

باستخدام JavaScript: document.getElementById('gift-close').click();

89
André Dion

حاول استخدام document.createEvent الموضحة هنا https://developer.mozilla.org/en-US/docs/Web/API/document.createEvent

يجب أن يبدو رمز الوظيفة الذي يحاكي النقرات مثل هذا:

function simulateClick() {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var a = document.getElementById("gift-close"); 
  a.dispatchEvent(evt);      
}
15
ihor marusyk

باستخدام jQuery:

$ ( '# هدية وثيقة') انقر ()؛
14
Alex Guerra

مقتطف الشفرة أسفل!

يرجى إلقاء نظرة على هذه الوثائق والأمثلة علىMDN، وسوف تجد إجابتك. هذه هي الطريقة propper للقيام بذلك وأود أن أقول.

إنشاء وإثارة الأحداث

حدث الإرسال (مثال)

مأخوذة من "حدث الإرسال (مثال)" - رابط HTML (محاكاة النقرة):

function simulateClick() {

  var evt = document.createEvent("MouseEvents");

  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);

  var cb = document.getElementById("checkbox"); 
  var canceled = !cb.dispatchEvent(evt);

  if(canceled) {
    // A handler called preventDefault
    alert("canceled");
  } else {
    // None of the handlers called preventDefault
    alert("not canceled");
  }
}

هذه هي الطريقة التي سأفعل بها (2017 ..):

ببساطة باستخدام MouseEvent .

function simulateClick() {

    var evt = new MouseEvent("click");

    var cb = document.getElementById("checkbox");
    var canceled = !cb.dispatchEvent(evt);

    if (canceled) {
        // A handler called preventDefault
        console.log("canceled");
    } else {
        // None of the handlers called preventDefault
        console.log("not canceled");
    }
}
document.getElementById("button").onclick = evt => {
    
    simulateClick()
}

function simulateClick() {

    var evt = new MouseEvent("click");

    var cb = document.getElementById("checkbox");
    var canceled = !cb.dispatchEvent(evt);

    if (canceled) {
        // A handler called preventDefault
        console.log("canceled");
    } else {
        // None of the handlers called preventDefault
        console.log("not canceled");
    }
}
<input type="checkbox" id="checkbox">
<br>
<br>
<button id="button">Check it out, or not</button>
7
ravo10

الرمز الذي جربته بالفعل:

document.getElementById("gift-close").click();

... يجب أن تعمل طالما كان العنصر موجودًا بالفعل في DOM في وقت تشغيله. بعض الطرق الممكنة لضمان أن تشمل:

  1. شغّل الكود الخاص بك من معالج onload للإطار. http://jsfiddle.net/LKNYg/
  2. شغّل الكود الخاص بك من معالج جاهز للمستندات إذا كنت تستخدم jQuery. http://jsfiddle.net/LKNYg/1/
  3. ضع الكود في كتلة نصية تمثل بعد العنصر في html المصدر.

وبالتالي:

$(document).ready(function() {
    document.getElementById("gift-close").click();
    // OR
    $("#gift-close")[0].click();
});
7
nnnnnn

استخدم هذا الرمز للنقر:

$("#gift-close").click();
2
Farid Imranov

حاول إضافة وظيفة داخل طريقة click().

$('#gift-close').click(function(){
  //do something here
});

لقد نجحت هذه الوظيفة بالنسبة لي مع وظيفة معينة داخل طريقة click () بدلاً من إبقائها فارغة.

0
Neo