2013-07-12 4 views
2

Там будет число таких DIV, созданных с уникальным сНом идентификатором, , когда я нажимаю на кнопку со мной он должен показать оповещение для этого ProductID, я делаю это какBinding функции нажмите на динамические дивы

<div id="xyz{productid}"> 
    Click Me 
</div> 
..... 
<script type="text/javascript"> 
    var uuid="{productid}" 
</script> 
<script src="file1.js"> 

кода из file1.js

$(function() { 
    var d = "#xyz" + uuid; 
    $(d).click(function() { 
     alert("Hello" + uuid); 
     return false; 
    }); 
    alert(d); 
}); 

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

............................ .. получил решение извините за поздний ответ, был в выходные дни, но я решил его по типу класса, где мы создаем объект с каждым фрагментом на странице, а во время загрузки страницы мы инициализируем все его классовые классы, так что вы можете получить индивидуальный Див идентификатор и когда привязать функцию к нему, по-прежнему может использовать данные из своих переменных класса, им разместить свой код здесь, так что если один хочет может использовать его,

UniqeDiv= new function() 
{ 
var _this = this; 
var _divParams = null; 
var _uuid=null; 
//constructor 
new function(){  

//$(document).bind("ready", initialize); 

//$(window).bind("unload", dispose); 


_uuid=pUUID; 

initialize(); 

$('#abcd_'+_uuid).bind("click",showRatingsMe) 

dispose(); 


} 

function initialize(){ 

} 
function showRatingsMe(){  
    alert(_uuid);  
} 
function dispose(){ 
    _this = _divParams = null 
} 
} 
//In a target file, im including this js file as below 
<script type="text/javascript"> 
    var pUUID="${uuid}";   
</script> 
<script type="text/javascript" src="http://localhost:8080/..../abc.js"></script> 
+0

поэтому проблема в том, что она не является обязательным событием клика для всех div, но делает это только для последнего div, я использую эти div как плитки на странице и этот скрипт также с каждой плиткой, поэтому я уверен, что функция для каждой плитки, но проблема в том, что она не привязана к этому div, где она загружена ... – user2408578

+0

Пожалуйста, отредактируйте свой вопрос и добавьте соответствующую информацию. Это привлечет меньше внимания, если вы станете только комментарием. Я предполагаю, что на данный момент вы запускаете код, 'uuid' будет иметь значение для последнего div. Поскольку вы не знаете, как именно вы создаете несколько элементов, я не думаю, что мы можем оказать какую-либо помощь. Пожалуйста, предоставьте дополнительную информацию. –

ответ

2

вы можете использовать attribute selector with starts with дикая карта с jQuery on() для привязки события click для динамически добавленных элементов.

$(document).on("click", "[id^=xyz]", function(){ 
    //your code here 
    alert("Hello"+this.id); 
    return false; 
}); 
+0

его же проблема, поскольку он всегда находит первый div, начинающийся с этого xyz, он свяжет все функции только с этим div, так же как и мой опыт, когда я отлаживал его, когда я нажимаю на первую кнопку на плитке продукта, он дал мне 10 предупреждений, так как там 10 товаров на моей странице категории – user2408578

+0

Вы используете какой-либо цикл? – Adil

+0

Да, я использую цикл, чтобы показывать эти продукты на странице, и im в каждой итерации, вызывающей этот js-файл (file1.js), и передавая ему параметр, который является uuid – user2408578

0

Я бы добавил класс к каждому из ваших динамических div, чтобы их было проще запросить. В следующем примере я использую класс dynamic, чтобы пометить теги div, которые добавлены динамически и должны иметь этот клик-прослушиватель.

Чтобы прикрепить событие, вы можете использовать делегированные события с функцией jQuery on(). Делегирование события будет срабатывать для текущих и будущих элементов в DOM:

$(function() { 
    var d="#xyz"+uuid; 
    $(document).on('click', 'div.dynamic', function() { 
     alert("Hello"+uuid); 
     return false; 
    });  
}); 

Вы можете прочитать больше о делегировании событий here.

+0

что такое div.dynamic здесь мое замешательство, извините за мое плохое – user2408578

+0

@ user2408578 Хороший вопрос; Я этого не объяснил. Это класс, который может быть добавлен ко всем динамическим div, чтобы упростить их запрос. Я уточнил свой ответ, чтобы уточнить. – cfs

+0

Спасибо за вашу оперативную поддержку этого новичка, добавил свои знания – user2408578

0

Вы можете использовать

$ ("[ID * = 'DIVID _']") нажмите (функция() {} ).

, но для этого вам нужно убедиться, что все идентификаторы div начинаются с «div_».

+0

Как и раньше, но спасибо за вашу быструю поддержку – user2408578

Смежные вопросы