2

我有一个编写的函数,javascript我想重写它jQuery这是函数代码:

function onclickRbtn(controlID , Message)
     {
         var s = document.getElementById(controlID);
         var sVal = event.srcElement.value;
         for (var i = 0; i < s.rows.length; i++)
          {
             if (s.getElementsByTagName("input")[i].value == sVal)
                 s.getElementsByTagName("label")[i].innerText = Message;
         }
         s.disabled = 'disabled';
    }

这段代码:event.srcElement.value 是什么,jQuery 中的等价物是什么?

谢谢

4

4 回答 4

4

您可以使用event.target

要找出哪个元素是事件的目标,您可以使用

*http://www.quirksmode.org/js/events_properties.html#target*

于 2012-04-23T11:15:17.307 回答
3

你是这个意思:

$("button").click(function(){
    var value = $(this).val();
});
于 2012-04-23T11:17:01.147 回答
3

如果你有工作的 JavaScript 代码,不要用 jQuery 重写它。这就像说“这把锤子可以把钉子钉在墙上,但我想用大锤代替。”

除此之外,您拥有的代码是 IE 8 及更低版本独有的,它在 IE 9 或其他浏览器中不起作用,因为它使用特定术语(全局event对象,srcElement...)

这是您应该使用的代码:

function onclickRbtn(controlID,Message,evt) {
    evt = evt || window.event;
    var s = document.getElementById(controlID),
        sVal = (evt.srcElement || evt.target).value,
        inputs = s.getElementsByTagName('input'),
        labels = s.getElementsByTagName('label');

    for( var i=0; i<s.rows.length; i++) {
        if( inputs[i].value == sVal) labels[i].innerText = labels[i].textContent = Message;
    }
    s.disabled = true;
}

无论您在哪里附加事件,请确保将事件添加到参数中。例子:

<element onclick="onclickRbtn(controlID, Message, event);">
elem.onclick = function(e) {onclickRbtn(controlID, Message, e);};
于 2012-04-23T11:20:17.240 回答
2

这适用于 IE9、IE 8、IE7、Chrome 22、Safari 5.7.1。它在 FF 14 中不起作用:

$(event.srcElement || event.target);
于 2012-10-10T11:08:57.743 回答