2012-10-09 187 views
0

我已經動態加載領域的按鈕一樣點擊功能

<input class="upload_image_23" type="text" size="36" name="products_image_large_new_23" value="" /> 
<input class="upload_image_button_24" type="button" value="Upload Image" /> 
<input class="upload_image_23" type="text" size="36" name="products_image_large_new_23" value="" /> 
<input class="upload_image_button_24" type="button" value="Upload Image" /> 

現在我想改變這個jQuery功能適用於所有upload_image_button_[any-number]products_image_large_new_[any-number]

jQuery(document).ready(function() { 

jQuery('.upload_image_button_[any-number]').click(function() { 
formfield = jQuery('.upload_image_[any-number]').attr('name'); 
tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true'); 
return false; 
}); 

window.send_to_editor = function(html) { 
imgurl = jQuery('img',html).attr('src'); 
jQuery('.upload_image_[any-number]').val(imgurl); 
tb_remove(); 
} 

}); 

我應該包括[any-number]

+2

標識** **必須是唯一的。 – j08691

回答

1

,以配合id s表示與#upload_image_開始的所有元素,使用這個選擇:

input[id^="upload_image_"] 

而且你的代碼將變成:

jQuery('input[class^="upload_image_button_"]').click(function() { 
    var id = jQuery(this).attr('class').split('_').slice(-1); 
    formfield = jQuery('.upload_image_' + id).attr('name'); 

    tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true'); 
    return false; 
}); 

瞭解更多關於屬性選擇在這裏:http://api.jquery.com/category/selectors/attribute-selectors/

如果你的元素在確切的順序,你可以所以用這個來得到formfield

formfield = jQuery(this).prev().attr('name'); 
+0

我認爲最好是向按鈕添加一個類名並將其用作選擇器。現有的類名實際上是ID,應該更改爲ID: Ringo

+1

@Ringo:OP在編寫我的答案時編輯了問題,但是,是的,那應該是比獨特的類名稱更好的方法。 – Blender

0

嘗試

$(document.body).click(function() { 
     $("div").each(function (i) { 
     formfield = jQuery('#upload_image_[any-number]').attr('name'); 
     tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true'); 
    return false; 

     }); 
    }); 
+0

將點擊添加到正文似乎會導致事件傳播問題。 – Ringo