2013-06-05 5 views
0

Где-то в моем коде у меня есть следующие строки, которые я не могу изменить:Получить объект ссылки JQuery

<div class="list-clickable" onclick="javascript:update_left_frame('1', $(this));"> 
<div class="list-clickable" onclick="javascript:update_left_frame('2', $(this));"> 
<div class="list-clickable" onclick="javascript:update_left_frame('3', $(this));"> 
// etc... 

Несколько строк кода позже, мне нужно вызвать ту же самую функцию, так что обновляет левый фрейм. Это генерируется с помощью PHP, передавая переменное число в качестве первых пар:

<script> 
    // foo = ?? 
    update_left_frame('3', foo); 
</script> 

мне нужно получить ссылку блока с тем же числом, 3 в этом примере. Как настроить «foo» var так, чтобы он соответствовал соответствующей ссылке на блок? Я, хотя о получении:

$('.list-clickable').attr('onclick') 

Но я не могу заставить его работать.

Заранее благодарен!

+0

Пересмотреть свой дизайн. Генерирование кода JavaScript с использованием PHP, как правило, редко является наилучшим способом достижения вашей цели. – Blender

+3

Я бы также предложил заменить inline '' onclick'', обработчиком jQuery ['' on''] (http://api.jquery.com/on/) –

ответ

1

Это должно быть

$('.list-clickable').attr('onclick'); 

Если вы можете дать номер сделать что-то вроде этого

update_left_frame('3', 
    $('div').filter(function() { 
    return this.attr('onclick').match(/update_left_frame\(\'3\'/); //same number as first argument 
    }) 
); 
+0

Typo, исправлено, но это не решает мою проблему , –

0

Попробуйте установить идентификатор для каждого из элементов Div ...

<div id="list-clickable1" class="list-clickable" onclick="javascript:update_left_frame('1', $(this));"> 
<div id="list-clickable2" class="list-clickable" onclick="javascript:update_left_frame('2', $(this));"> 
<div id="list-clickable3" class="list-clickable" onclick="javascript:update_left_frame('3', $(this));"> 
// etc... 

Затем, чтобы получить ссылку на div, используйте $ ('. List-clickable3'), как Пример ниже:

<script> 
    var ctrl = $('.list-clickable3'); 
    aggiorna_left_frame('3', ctrl); 
</script> 
+0

Я не смог бы получить правильный ID при генерации кода через PHP. Это было бы слишком легко :) –

1

Попробуйте это:

$('.list-clickable').on('click', function(){ 
    update_left_frame(($(this).index() + 1), $(this)); 
}); 
+0

Эти цифры абсолютно случайны, я не могу полагаться на их простую позицию. –

0

ОК, я нашел решение, которое работает хорошо. Я позволю PHP сгенерировать это:

$(document).ready(function() { 
    var foo; 
    $('.list-clickable').each(function() { 
     var attr = $(this).attr('onclick'); 
     if (attr.indexOf('frame(3') !== -1) { 
      foo = $(this); 
     } 
    }); 
    update_left_frame('MY_CODE', foo); 
}); 
Смежные вопросы