2014-06-09 95 views
-2

我有一個循環顯示帶有JavaScript名稱的類的按鈕。我需要傳遞被點擊的span的id。我的問題是因爲那裏的循環,我可以通過它的索引獲得ID,但是我想要的是動態地單擊按鈕的ID。使用javascript動態傳遞元素值

while(...){ 
    <span class="id">'.$table["id"].'</span> 
    <input type="button" class="edit" value="Edit"/> 
    } 


$('.edit').on('click', function (e) { 
    var x=document.getElementsByClassName("id")[0]; 
    var xx = x.innerHTML; 

     $.fancybox({ 
      ... 
     } 
     }); 
}); 
+0

正如我所看到的按鈕沒有ID?你想要跨文本值,我猜?另外,你可以很容易地通過jquery訪問元素(不需要純js),因爲你已經在使用它了。 – sinisake

回答

0

您能否僅僅使用$(this)。在您的點擊事件中? 你並不需要這樣做:

var x=document.getElementsByClassName("id")[0]; 

只是說

var x = $(this); 

,因爲你已經是你的元素在那裏,當點擊事件發生。

希望它能幫助! :)

1

聽起來像你想使用

變種X = $(本).closest( 「跨度」);

應該讓你點擊按鈕旁邊的跨度。

+0

它的值只有'[object Object]' – user3384012

+0

嘗試在最後添加添加文本()。 – sinisake

0

我會用data attributes來傳遞變量,所以你可以只爲CSS樣式離開類。另外,如果你已經在使用jQuery,爲什麼不用它呢?

while(...){ 
<span class="id" data-id="id">'.$table["id"].'</span> 
<input type="button" class="edit" value="Edit" data-target="id"/> 
} 


$('.edit').on('click', function (e) { 
    var data = $(this).data('target'); // Get the data-target attribute 
    var target = $('*[data-id='+data+']'); // Find the matching span 
    var xx = target.html(); // Get HTML from Span 

    $.fancybox({ 
     ... 
    } 
    }); 
}); 
+0

謝謝。我試過這個,但它仍然獲得第一個值,而不是點擊按鈕的值。 – user3384012