Преобразование «document.getElementById» в jQuery - PullRequest
6 голосов
/ 12 сентября 2009

Я думал / искал эквивалент проблемы, с которой столкнулся ниже, и ничего не смог найти. Есть ли способ, которым я могу переписать это для работы с JQuery в качестве альтернативы?

Первая половина кода.

<a href="link.php?test=true" onclick="request(this)" target="_blank">

<a id="step2" href="javascript:alert('NOT FINISHED!');">

Вторая половина кода.

<script language="javascript">
var requests = 16;

function request(self)
{if(self.href != "#")
requests -= 1;

self.childNodes[0].src = "images/clear.gif";

if(requests === 0)
document.getElementById("step2").href = "next.php";}
</script>

Принимая во внимание, что я хочу сделать тип запроса jQuery var. Я хочу, чтобы onclick="request(this) работал с моим jQuery.

Ответы [ 4 ]

10 голосов
/ 12 сентября 2009

Ответ на ваш вопрос (название) должен заменить

document.getElementById('about').href = '#';

с

$('#about').attr('href','#');

Я понятия не имею, поможет ли это вам решить вашу проблему, поскольку я действительно не знаю, что вы пытаетесь сделать. Судя по вашим комментариям и образцу кода, вы пытаетесь создать своего рода мастера, но я понятия не имею, как он будет работать, учитывая то, что вы опубликовали.

Обновление:

Может быть, что-то вроде:

<a href="link.php?test=true" onclick="request(this)" target="_blank" class='request'></a>

<a id="step2" href="next.php">Step 2</a>

<script language="javascript">
    $(function() {
       var requests = 16;
       $('#step2').click( function() {
           alert('Not finished');
           return false;
       });
       $('.request').click( function() {
           var $this = $(this); // save jQuery reference to element clicked

           // swap indicator image source
           $this.find('img:first').attr('src','images/clear.gif');

           // if the number of flipped indicators equals the number of requests
           // remove the click handler from the step 2 link
           // this removes the alert and allows the user to proceed
           if ($('.request img[src="images/clear.gif"]').length == requests) {
              $('#step2').unbind('click');
           }

           ...do something with the href for this request via ajax???

           // replace this handler with one that simply returns false
           // and remove the href since we're done with this request
           $(this).unbind('click').attr('href','#').click( function() { return false; } );

            // stop the default action for the request
           return false;
    });
</script>
2 голосов
/ 25 января 2012

Для удобства вы можете определить дополнительный метод для $ object

$.getElementById = function(id){
    return $('#'+id).get(0);
};

тогда вы можете просто изменить все свои звонки с

document.getElementById

до

$.getElementById

Есть множество предостережений с этим, но это может быть полезно в зависимости от вашей ситуации.

2 голосов
/ 12 сентября 2009

Как это? Я думаю, что я что-то упускаю / не понимаю, хотя ...

$('#about').click( function(evt) {
   request(this);
 });
0 голосов
/ 12 сентября 2009

Это? Не уверен, что я полностью получаю то, что вы хотите

function request(element)
{
    $(element).doSomething();
    return false;
}

вызвано:

onclicked="return request(this);"
...