ورود

View Full Version : سوال: رويداد كليك



saeedtrb
جمعه 21 تیر 1392, 20:13 عصر
سلام دوستان كسي مي دونه چرا اين كد كار نمي كنه بايد چه كار كنم؟؟
tag=document.createElement("div");
tag.setAttribute("id","s");
document.getElementById("slider").appendChild(tag);
$(document).ready(function() {
$("s").click(function(e) {
alert("hello");
});
});

mfungroup
جمعه 21 تیر 1392, 20:32 عصر
اگه اون اسلایدر رو داشته باشی و جی کوئری رو ایمپورت کرده باشی باید کار کنه

saeedtrb
جمعه 21 تیر 1392, 20:34 عصر
اين كد درسته ولي # يادم شد ولي يه كد دارم به همين صورته ولي نميدونم چرا كار نميكنه

saeedtrb
جمعه 21 تیر 1392, 21:33 عصر
بابا ما كه ديوونه شديم يه وقتي با ديباگر ميرم جلو كار ميكنه لطفاً‌يكي كمك كنه . وقتي دستورات مربوط به ajax بر ميدارم درسته اينم كدش
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" language="javascript" type="text/javascript"></script>
<style>
#show_gallery {
width: 91%;
height: 91%;
position: absolute;
background: rgba(0, 0, 0, 0.88);
overflow: hidden;
left: 52px;
top: 59px;
border-radius: 7px;
box-shadow: 0 0 20px #000;
z-index: 200;
border: 1px solid rgb(48, 48, 48);
}
#show_gallery>#close {
width: 5%;
height: 11%;
background: url(images/close.png) no-repeat;
right: 2px;
top: 11px;
position: absolute;
}
</style>

</head>

<body>
<script>
var href="http://localhost/s/data.php";

function Load(href){
/* var xmlhttp;
var widthP=window.innerWidth;
var heightP=window.innerHeight;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest()
}
else
{
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ;
}
xmlhttp.onreadystatechange = function ( )
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{*/

var tagGallery=document.createElement("div");
tagGallery.setAttribute("id","show_gallery");
var tagClose=document.createElement("div");
tagClose.setAttribute("id","close");
tagGallery.appendChild(tagClose);
document.body.appendChild(tagGallery);
document.getElementById("show_gallery").innerHTML="<img src='images/img.jpg'/>";
/* }
}
xmlhttp.open('GET',href);
xmlhttp.send();

*/
}
Load(href)
$(document).ready(function(e) {
$("img").click(function() {
alert("ss")
});
});
</script>
</body>
</html>

jalil_gh
شنبه 22 تیر 1392, 00:14 صبح
اول اینکه شما تو رویداد onreadystatechange مربوط به ajax، وقتی که از innerHTML استفاده می‌کنید هرچی داخل div مورد نظر بوده پاک میشه و اون img توش قرار میگیره.
دوم اینکه وقتی شما داخل document.ready به img رویداد کلیک میدید. این تگ چون بعد از اتمام درخواست ajax ایجاد میشه،‌ موقع تعریف رویداد وجود خارجی نداره.

saeedtrb
شنبه 22 تیر 1392, 16:08 عصر
پس چرا به اين صورت عمل نميكنه اين بار كه ديگه يك المنت ايجاد ميشه؟؟
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" language="javascript" type="text/javascript"></script>
<style>
#show_gallery {
width: 91%;
height: 91%;
position: absolute;
background: rgba(0, 0, 0, 0.88);
overflow: hidden;
left: 52px;
top: 59px;
border-radius: 7px;
box-shadow: 0 0 20px #000;
z-index: 200;
border: 1px solid rgb(48, 48, 48);
}
#show_gallery>#close {
width: 5%;
height: 11%;
background: url(images/close.png) no-repeat;
right: 2px;
top: 11px;
position: absolute;
}
</style>

</head>

<body>
<script>

function Load(href){
/* var xmlhttp;
var widthP=window.innerWidth;
var heightP=window.innerHeight;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest()
}
else
{
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ;
}
xmlhttp.onreadystatechange = function ( )
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{*/
var tagGallery=document.createElement("div");
tagGallery.setAttribute("id","show_gallery");
var tagClose=document.createElement("div");
tagClose.setAttribute("id","close");
tagGallery.appendChild(tagClose);
document.body.appendChild(tagGallery);
/* }
}
xmlhttp.open('GET',href);
xmlhttp.send();
*/

}
Load(href)
$(function() {
$("#close").click(function() {
alert("ss")
});
});
</script>
</body>
</html>

saeedtrb
شنبه 22 تیر 1392, 16:40 عصر
اول اینکه شما تو رویداد onreadystatechange مربوط به ajax، وقتی که از innerHTML استفاده می‌کنید هرچی داخل div مورد نظر بوده پاک میشه و اون img توش قرار میگیره.
دوم اینکه وقتی شما داخل document.ready به img رویداد کلیک میدید. این تگ چون بعد از اتمام درخواست ajax ایجاد میشه،‌ موقع تعریف رویداد وجود خارجی نداره.
ميشه بگيد چه كار كنم كه اين شي كه به وسيله ajax از سرور فراخوني ميكنم بشناسه؟؟

jalil_gh
یک شنبه 23 تیر 1392, 03:56 صبح
ميشه بگيد چه كار كنم كه اين شي كه به وسيله ajax از سرور فراخوني ميكنم بشناسه؟؟
دو تا راه به نظرم میرسه.
یکی اینکه این رویداد کلیک رو داخل متد onreadystatechange بعد از ایجاد عنصر قرار بدید.
دوم اینکه از event delegation استفاده کنید. اون کد شما به این صورت در میاد.
Load(href)
$(function() {
$(document).on('click', '#close', function () {
alert('ss');
});
});